Coverage Report

Created: 2025-02-15 06:26

/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
658k
     #define exprtk_debug(params) (void)0
65
   #endif
66
67
   #define exprtk_error_location             \
68
126k
   "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
1.47k
         #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
8.62M
      {
105
8.62M
         return (' '  == c) || ('\n' == c) ||
106
8.62M
                ('\r' == c) || ('\t' == c) ||
107
8.62M
                ('\b' == c) || ('\v' == c) ||
108
8.62M
                ('\f' == c) ;
109
8.62M
      }
110
111
      inline bool is_operator_char(const char_t c)
112
3.90M
      {
113
3.90M
         return ('+' == c) || ('-' == c) ||
114
3.90M
                ('*' == c) || ('/' == c) ||
115
3.90M
                ('^' == c) || ('<' == c) ||
116
3.90M
                ('>' == c) || ('=' == c) ||
117
3.90M
                (',' == c) || ('!' == c) ||
118
3.90M
                ('(' == c) || (')' == c) ||
119
3.90M
                ('[' == c) || (']' == c) ||
120
3.90M
                ('{' == c) || ('}' == c) ||
121
3.90M
                ('%' == c) || (':' == c) ||
122
3.90M
                ('?' == c) || ('&' == c) ||
123
3.90M
                ('|' == c) || (';' == c) ;
124
3.90M
      }
125
126
      inline bool is_letter(const char_t c)
127
23.1M
      {
128
23.1M
         return (('a' <= c) && (c <= 'z')) ||
129
23.1M
                (('A' <= c) && (c <= 'Z')) ;
130
23.1M
      }
131
132
      inline bool is_digit(const char_t c)
133
34.5M
      {
134
34.5M
         return ('0' <= c) && (c <= '9');
135
34.5M
      }
136
137
      inline bool is_letter_or_digit(const char_t c)
138
21.0M
      {
139
21.0M
         return is_letter(c) || is_digit(c);
140
21.0M
      }
141
142
      inline bool is_left_bracket(const char_t c)
143
7.26M
      {
144
7.26M
         return ('(' == c) || ('[' == c) || ('{' == c);
145
7.26M
      }
146
147
      inline bool is_right_bracket(const char_t c)
148
6.71M
      {
149
6.71M
         return (')' == c) || (']' == c) || ('}' == c);
150
6.71M
      }
151
152
      inline bool is_bracket(const char_t c)
153
2.58M
      {
154
2.58M
         return is_left_bracket(c) || is_right_bracket(c);
155
2.58M
      }
156
157
      inline bool is_sign(const char_t c)
158
674k
      {
159
674k
         return ('+' == c) || ('-' == c);
160
674k
      }
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
29.7M
      {
177
29.7M
         return std::isprint(static_cast<uchar_t>(c)) ||
178
29.7M
                is_whitespace(c);
179
29.7M
      }
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.05k
      {
192
1.05k
         return std::tolower(c1) == std::tolower(c2);
193
1.05k
      }
194
195
      inline bool imatch(const std::string& s1, const std::string& s2)
196
3.80M
      {
197
3.80M
         if (s1.size() == s2.size())
198
189k
         {
199
229k
            for (std::size_t i = 0; i < s1.size(); ++i)
200
212k
            {
201
212k
               if (std::tolower(s1[i]) != std::tolower(s2[i]))
202
173k
               {
203
173k
                  return false;
204
173k
               }
205
212k
            }
206
207
16.3k
            return true;
208
189k
         }
209
210
3.61M
         return false;
211
3.80M
      }
212
213
      struct ilesscompare
214
      {
215
         inline bool operator() (const std::string& s1, const std::string& s2) const
216
20.7M
         {
217
20.7M
            const std::size_t length = std::min(s1.size(),s2.size());
218
219
24.8M
            for (std::size_t i = 0; i < length; ++i)
220
23.0M
            {
221
23.0M
               const char_t c1 = static_cast<char_t>(std::tolower(s1[i]));
222
23.0M
               const char_t c2 = static_cast<char_t>(std::tolower(s2[i]));
223
224
23.0M
               if (c1 < c2)
225
12.9M
                  return true;
226
10.0M
               else if (c2 < c1)
227
6.03M
                  return false;
228
23.0M
            }
229
230
1.79M
            return s1.size() < s2.size();
231
20.7M
         }
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
159k
      {
259
         // Special function: $f12 or $F34
260
159k
         return (4 == symbol.size())  &&
261
159k
                ('$' == symbol[0])    &&
262
159k
                imatch('f',symbol[1]) &&
263
159k
                is_digit(symbol[2])   &&
264
159k
                is_digit(symbol[3]);
265
159k
      }
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
126k
      {
280
126k
         if (0 == i)
281
14
            return std::string("0");
282
283
126k
         std::string result;
284
285
126k
         const int sign = (i < 0) ? -1 : 1;
286
287
757k
         for ( ; i; i /= 10)
288
631k
         {
289
631k
            result += '0' + static_cast<char_t>(sign * (i % 10));
290
631k
         }
291
292
126k
         if (sign < 0)
293
10
         {
294
10
            result += '-';
295
10
         }
296
297
126k
         std::reverse(result.begin(), result.end());
298
299
126k
         return result;
300
126k
      }
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
8
      {
280
8
         if (0 == i)
281
0
            return std::string("0");
282
283
8
         std::string result;
284
285
8
         const int sign = (i < 0) ? -1 : 1;
286
287
32
         for ( ; i; i /= 10)
288
24
         {
289
24
            result += '0' + static_cast<char_t>(sign * (i % 10));
290
24
         }
291
292
8
         if (sign < 0)
293
0
         {
294
0
            result += '-';
295
0
         }
296
297
8
         std::reverse(result.begin(), result.end());
298
299
8
         return result;
300
8
      }
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
126k
      {
280
126k
         if (0 == i)
281
14
            return std::string("0");
282
283
126k
         std::string result;
284
285
126k
         const int sign = (i < 0) ? -1 : 1;
286
287
757k
         for ( ; i; i /= 10)
288
631k
         {
289
631k
            result += '0' + static_cast<char_t>(sign * (i % 10));
290
631k
         }
291
292
126k
         if (sign < 0)
293
10
         {
294
10
            result += '-';
295
10
         }
296
297
126k
         std::reverse(result.begin(), result.end());
298
299
126k
         return result;
300
126k
      }
301
302
      inline std::string to_str(int i)
303
126k
      {
304
126k
         return to_str_impl(i);
305
126k
      }
306
307
      inline std::string to_str(std::size_t i)
308
8
      {
309
8
         return to_str_impl(static_cast<long long int>(i));
310
8
      }
311
312
      inline bool is_hex_digit(const uchar_t digit)
313
17.0k
      {
314
17.0k
         return (('0' <= digit) && (digit <= '9')) ||
315
17.0k
                (('A' <= digit) && (digit <= 'F')) ||
316
17.0k
                (('a' <= digit) && (digit <= 'f')) ;
317
17.0k
      }
318
319
      inline uchar_t hex_to_bin(uchar_t h)
320
5.89k
      {
321
5.89k
         if (('0' <= h) && (h <= '9'))
322
1.59k
            return (h - '0');
323
4.29k
         else
324
4.29k
            return static_cast<uchar_t>(std::toupper(h) - 'A' + 10);
325
5.89k
      }
326
327
      template <typename Iterator>
328
      inline bool parse_hex(Iterator& itr, Iterator end,
329
                            char_t& result)
330
17.4k
      {
331
17.4k
         if (
332
17.4k
              (end ==  (itr    ))               ||
333
17.4k
              (end ==  (itr + 1))               ||
334
17.4k
              (end ==  (itr + 2))               ||
335
17.4k
              (end ==  (itr + 3))               ||
336
17.4k
              ('0' != *(itr    ))               ||
337
17.4k
              ('X' != std::toupper(*(itr + 1))) ||
338
17.4k
              (!is_hex_digit(*(itr + 2)))       ||
339
17.4k
              (!is_hex_digit(*(itr + 3)))
340
17.4k
            )
341
14.5k
         {
342
14.5k
            return false;
343
14.5k
         }
344
345
2.94k
         result = hex_to_bin(static_cast<uchar_t>(*(itr + 2))) << 4 |
346
2.94k
                  hex_to_bin(static_cast<uchar_t>(*(itr + 3))) ;
347
348
2.94k
         return true;
349
17.4k
      }
350
351
      inline bool cleanup_escapes(std::string& s)
352
3.86k
      {
353
3.86k
         typedef std::string::iterator str_itr_t;
354
355
3.86k
         str_itr_t itr1 = s.begin();
356
3.86k
         str_itr_t itr2 = s.begin();
357
3.86k
         str_itr_t end  = s.end  ();
358
359
3.86k
         std::size_t removal_count  = 0;
360
361
7.24M
         while (end != itr1)
362
7.24M
         {
363
7.24M
            if ('\\' == (*itr1))
364
17.4k
            {
365
17.4k
               if (end == ++itr1)
366
0
               {
367
0
                  return false;
368
0
               }
369
17.4k
               else if (parse_hex(itr1, end, *itr2))
370
2.94k
               {
371
2.94k
                  itr1 += 4;
372
2.94k
                  itr2 += 1;
373
2.94k
                  removal_count += 4;
374
2.94k
               }
375
14.5k
               else if ('a' == (*itr1)) { (*itr2++) = '\a'; ++itr1; ++removal_count; }
376
13.0k
               else if ('b' == (*itr1)) { (*itr2++) = '\b'; ++itr1; ++removal_count; }
377
12.4k
               else if ('f' == (*itr1)) { (*itr2++) = '\f'; ++itr1; ++removal_count; }
378
11.4k
               else if ('n' == (*itr1)) { (*itr2++) = '\n'; ++itr1; ++removal_count; }
379
11.0k
               else if ('r' == (*itr1)) { (*itr2++) = '\r'; ++itr1; ++removal_count; }
380
9.88k
               else if ('t' == (*itr1)) { (*itr2++) = '\t'; ++itr1; ++removal_count; }
381
9.53k
               else if ('v' == (*itr1)) { (*itr2++) = '\v'; ++itr1; ++removal_count; }
382
9.05k
               else if ('0' == (*itr1)) { (*itr2++) = '\0'; ++itr1; ++removal_count; }
383
9.04k
               else
384
9.04k
               {
385
9.04k
                  (*itr2++) = (*itr1++);
386
9.04k
                  ++removal_count;
387
9.04k
               }
388
389
17.4k
               continue;
390
17.4k
            }
391
7.22M
            else
392
7.22M
               (*itr2++) = (*itr1++);
393
7.24M
         }
394
395
3.86k
         if ((removal_count > s.size()) || (0 == removal_count))
396
0
            return false;
397
398
3.86k
         s.resize(s.size() - removal_count);
399
400
3.86k
         return true;
401
3.86k
      }
402
403
      class build_string
404
      {
405
      public:
406
407
         explicit build_string(const std::size_t& initial_size = 64)
408
35.7k
         {
409
35.7k
            data_.reserve(initial_size);
410
35.7k
         }
411
412
         inline build_string& operator << (const std::string& s)
413
82.5k
         {
414
82.5k
            data_ += s;
415
82.5k
            return (*this);
416
82.5k
         }
417
418
         inline build_string& operator << (char_cptr s)
419
118k
         {
420
118k
            data_ += std::string(s);
421
118k
            return (*this);
422
118k
         }
423
424
         inline operator std::string () const
425
35.7k
         {
426
35.7k
            return data_;
427
35.7k
         }
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
808
      {
537
72.5k
         for (std::size_t i = 0; i < reserved_symbols_size; ++i)
538
71.7k
         {
539
71.7k
            if (imatch(symbol, reserved_symbols[i]))
540
56
            {
541
56
               return true;
542
56
            }
543
71.7k
         }
544
545
752
         return false;
546
808
      }
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.49M
            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
2
            {
887
2
               return std::not_equal_to<T>()(v,v);
888
2
            }
bool exprtk::details::numeric::details::is_nan_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
886
1
            {
887
1
               return std::not_equal_to<T>()(v,v);
888
1
            }
bool exprtk::details::numeric::details::is_nan_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
886
1
            {
887
1
               return std::not_equal_to<T>()(v,v);
888
1
            }
889
890
            template <typename T>
891
            inline int to_int32_impl(const T v, real_type_tag)
892
46.4k
            {
893
46.4k
               return static_cast<int>(v);
894
46.4k
            }
int exprtk::details::numeric::details::to_int32_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
892
23.5k
            {
893
23.5k
               return static_cast<int>(v);
894
23.5k
            }
int exprtk::details::numeric::details::to_int32_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
892
22.9k
            {
893
22.9k
               return static_cast<int>(v);
894
22.9k
            }
895
896
            template <typename T>
897
            inline _int64_t to_int64_impl(const T v, real_type_tag)
898
72
            {
899
72
               return static_cast<_int64_t>(v);
900
72
            }
long long exprtk::details::numeric::details::to_int64_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
898
36
            {
899
36
               return static_cast<_int64_t>(v);
900
36
            }
long long exprtk::details::numeric::details::to_int64_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
898
36
            {
899
36
               return static_cast<_int64_t>(v);
900
36
            }
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
68
            {
911
68
               return std::not_equal_to<T>()(T(0),v);
912
68
            }
bool exprtk::details::numeric::details::is_true_impl<double>(double)
Line
Count
Source
910
38
            {
911
38
               return std::not_equal_to<T>()(T(0),v);
912
38
            }
bool exprtk::details::numeric::details::is_true_impl<float>(float)
Line
Count
Source
910
30
            {
911
30
               return std::not_equal_to<T>()(T(0),v);
912
30
            }
913
914
            template <typename T>
915
            inline bool is_false_impl(const T v)
916
53
            {
917
53
               return std::equal_to<T>()(T(0),v);
918
53
            }
bool exprtk::details::numeric::details::is_false_impl<double>(double)
Line
Count
Source
916
32
            {
917
32
               return std::equal_to<T>()(T(0),v);
918
32
            }
bool exprtk::details::numeric::details::is_false_impl<float>(float)
Line
Count
Source
916
21
            {
917
21
               return std::equal_to<T>()(T(0),v);
918
21
            }
919
920
            template <typename T>
921
            inline T abs_impl(const T v, real_type_tag)
922
93.5k
            {
923
93.5k
               return ((v < T(0)) ? -v : v);
924
93.5k
            }
double exprtk::details::numeric::details::abs_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
922
47.3k
            {
923
47.3k
               return ((v < T(0)) ? -v : v);
924
47.3k
            }
float exprtk::details::numeric::details::abs_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
922
46.1k
            {
923
46.1k
               return ((v < T(0)) ? -v : v);
924
46.1k
            }
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 expm1_impl(const T v, real_type_tag)
959
0
            {
960
               // return std::expm1<T>(v);
961
0
               if (abs_impl(v,real_type_tag()) < T(0.00001))
962
0
                  return v + (T(0.5) * v * v);
963
0
               else
964
0
                  return std::exp(v) - T(1);
965
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)
966
967
            template <typename T>
968
            inline T expm1_impl(const T v, int_type_tag)
969
            {
970
               return T(std::exp<double>(v)) - T(1);
971
            }
972
973
            template <typename T>
974
            inline T nequal_impl(const T v0, const T v1, real_type_tag)
975
0
            {
976
0
               typedef real_type_tag rtg;
977
0
               const T epsilon = epsilon_type<T>::value();
978
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);
979
0
            }
980
981
            inline float nequal_impl(const float v0, const float v1, real_type_tag)
982
0
            {
983
0
               typedef real_type_tag rtg;
984
0
               const float epsilon = epsilon_type<float>::value();
985
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;
986
0
            }
987
988
            template <typename T>
989
            inline T nequal_impl(const T v0, const T v1, int_type_tag)
990
            {
991
               return (v0 != v1) ? 1 : 0;
992
            }
993
994
            template <typename T>
995
            inline T modulus_impl(const T v0, const T v1, real_type_tag)
996
5.80k
            {
997
5.80k
               return std::fmod(v0,v1);
998
5.80k
            }
double exprtk::details::numeric::details::modulus_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
996
5.45k
            {
997
5.45k
               return std::fmod(v0,v1);
998
5.45k
            }
float exprtk::details::numeric::details::modulus_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
996
352
            {
997
352
               return std::fmod(v0,v1);
998
352
            }
999
1000
            template <typename T>
1001
            inline T modulus_impl(const T v0, const T v1, int_type_tag)
1002
            {
1003
               return v0 % v1;
1004
            }
1005
1006
            template <typename T>
1007
            inline T pow_impl(const T v0, const T v1, real_type_tag)
1008
1.72k
            {
1009
1.72k
               return std::pow(v0,v1);
1010
1.72k
            }
double exprtk::details::numeric::details::pow_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1008
893
            {
1009
893
               return std::pow(v0,v1);
1010
893
            }
float exprtk::details::numeric::details::pow_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1008
831
            {
1009
831
               return std::pow(v0,v1);
1010
831
            }
1011
1012
            template <typename T>
1013
            inline T pow_impl(const T v0, const T v1, int_type_tag)
1014
            {
1015
               return std::pow(static_cast<double>(v0),static_cast<double>(v1));
1016
            }
1017
1018
            template <typename T>
1019
            inline T logn_impl(const T v0, const T v1, real_type_tag)
1020
0
            {
1021
0
               return std::log(v0) / std::log(v1);
1022
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)
1023
1024
            template <typename T>
1025
            inline T logn_impl(const T v0, const T v1, int_type_tag)
1026
            {
1027
               return static_cast<T>(logn_impl<double>(static_cast<double>(v0),static_cast<double>(v1),real_type_tag()));
1028
            }
1029
1030
            template <typename T>
1031
            inline T log1p_impl(const T v, real_type_tag)
1032
0
            {
1033
0
               if (v > T(-1))
1034
0
               {
1035
0
                  if (abs_impl(v,real_type_tag()) > T(0.0001))
1036
0
                  {
1037
0
                     return std::log(T(1) + v);
1038
0
                  }
1039
0
                  else
1040
0
                     return (T(-0.5) * v + T(1)) * v;
1041
0
               }
1042
1043
0
               return std::numeric_limits<T>::quiet_NaN();
1044
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)
1045
1046
            template <typename T>
1047
            inline T log1p_impl(const T v, int_type_tag)
1048
            {
1049
               if (v > T(-1))
1050
               {
1051
                  return std::log(T(1) + v);
1052
               }
1053
1054
               return std::numeric_limits<T>::quiet_NaN();
1055
            }
1056
1057
            template <typename T>
1058
            inline T root_impl(const T v0, const T v1, real_type_tag)
1059
0
            {
1060
0
               if (v0 < T(0))
1061
0
               {
1062
0
                  return (v1 == trunc_impl(v1, real_type_tag())) &&
1063
0
                         (modulus_impl(v1, T(2), real_type_tag()) != T(0)) ?
1064
0
                         -std::pow(abs_impl(v0, real_type_tag()), T(1) / v1) :
1065
0
                          std::numeric_limits<double>::quiet_NaN();
1066
0
               }
1067
1068
0
               return std::pow(v0, T(1) / v1);
1069
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)
1070
1071
            template <typename T>
1072
            inline T root_impl(const T v0, const T v1, int_type_tag)
1073
            {
1074
               return root_impl<double>(static_cast<double>(v0),static_cast<double>(v1),real_type_tag());
1075
            }
1076
1077
            template <typename T>
1078
            inline T round_impl(const T v, real_type_tag)
1079
0
            {
1080
0
               return ((v < T(0)) ? std::ceil(v - T(0.5)) : std::floor(v + T(0.5)));
1081
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)
1082
1083
            template <typename T>
1084
            inline T roundn_impl(const T v0, const T v1, real_type_tag)
1085
0
            {
1086
0
               const int index = std::max<int>(0, std::min<int>(pow10_size - 1, static_cast<int>(std::floor(v1))));
1087
0
               const T p10 = T(pow10[index]);
1088
1089
0
               if (v0 < T(0))
1090
0
                  return T(std::ceil ((v0 * p10) - T(0.5)) / p10);
1091
0
               else
1092
0
                  return T(std::floor((v0 * p10) + T(0.5)) / p10);
1093
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)
1094
1095
            template <typename T>
1096
            inline T roundn_impl(const T v0, const T, int_type_tag)
1097
            {
1098
               return v0;
1099
            }
1100
1101
            template <typename T>
1102
            inline T hypot_impl(const T v0, const T v1, real_type_tag)
1103
0
            {
1104
0
               return std::sqrt((v0 * v0) + (v1 * v1));
1105
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)
1106
1107
            template <typename T>
1108
            inline T hypot_impl(const T v0, const T v1, int_type_tag)
1109
            {
1110
               return static_cast<T>(std::sqrt(static_cast<double>((v0 * v0) + (v1 * v1))));
1111
            }
1112
1113
            template <typename T>
1114
            inline T atan2_impl(const T v0, const T v1, real_type_tag)
1115
0
            {
1116
0
               return std::atan2(v0,v1);
1117
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)
1118
1119
            template <typename T>
1120
            inline T atan2_impl(const T, const T, int_type_tag)
1121
            {
1122
               return 0;
1123
            }
1124
1125
            template <typename T>
1126
            inline T shr_impl(const T v0, const T v1, real_type_tag)
1127
0
            {
1128
0
               return v0 * (T(1) / std::pow(T(2),static_cast<T>(static_cast<int>(v1))));
1129
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)
1130
1131
            template <typename T>
1132
            inline T shr_impl(const T v0, const T v1, int_type_tag)
1133
            {
1134
               return v0 >> v1;
1135
            }
1136
1137
            template <typename T>
1138
            inline T shl_impl(const T v0, const T v1, real_type_tag)
1139
0
            {
1140
0
               return v0 * std::pow(T(2),static_cast<T>(static_cast<int>(v1)));
1141
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)
1142
1143
            template <typename T>
1144
            inline T shl_impl(const T v0, const T v1, int_type_tag)
1145
            {
1146
               return v0 << v1;
1147
            }
1148
1149
            template <typename T>
1150
            inline T sgn_impl(const T v, real_type_tag)
1151
0
            {
1152
0
               if      (v > T(0)) return T(+1);
1153
0
               else if (v < T(0)) return T(-1);
1154
0
               else               return T( 0);
1155
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)
1156
1157
            template <typename T>
1158
            inline T sgn_impl(const T v, int_type_tag)
1159
            {
1160
               if      (v > T(0)) return T(+1);
1161
               else if (v < T(0)) return T(-1);
1162
               else               return T( 0);
1163
            }
1164
1165
            template <typename T>
1166
            inline T and_impl(const T v0, const T v1, real_type_tag)
1167
22
            {
1168
22
               return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0);
1169
22
            }
double exprtk::details::numeric::details::and_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1167
11
            {
1168
11
               return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0);
1169
11
            }
float exprtk::details::numeric::details::and_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1167
11
            {
1168
11
               return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0);
1169
11
            }
1170
1171
            template <typename T>
1172
            inline T and_impl(const T v0, const T v1, int_type_tag)
1173
            {
1174
               return v0 && v1;
1175
            }
1176
1177
            template <typename T>
1178
            inline T nand_impl(const T v0, const T v1, real_type_tag)
1179
9
            {
1180
9
               return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0);
1181
9
            }
double exprtk::details::numeric::details::nand_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1179
5
            {
1180
5
               return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0);
1181
5
            }
float exprtk::details::numeric::details::nand_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1179
4
            {
1180
4
               return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0);
1181
4
            }
1182
1183
            template <typename T>
1184
            inline T nand_impl(const T v0, const T v1, int_type_tag)
1185
            {
1186
               return !(v0 && v1);
1187
            }
1188
1189
            template <typename T>
1190
            inline T or_impl(const T v0, const T v1, real_type_tag)
1191
4
            {
1192
4
               return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0);
1193
4
            }
double exprtk::details::numeric::details::or_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1191
2
            {
1192
2
               return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0);
1193
2
            }
float exprtk::details::numeric::details::or_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1191
2
            {
1192
2
               return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0);
1193
2
            }
1194
1195
            template <typename T>
1196
            inline T or_impl(const T v0, const T v1, int_type_tag)
1197
            {
1198
               return (v0 || v1);
1199
            }
1200
1201
            template <typename T>
1202
            inline T nor_impl(const T v0, const T v1, real_type_tag)
1203
0
            {
1204
0
               return (is_false_impl(v0) && is_false_impl(v1)) ? T(1) : T(0);
1205
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)
1206
1207
            template <typename T>
1208
            inline T nor_impl(const T v0, const T v1, int_type_tag)
1209
            {
1210
               return !(v0 || v1);
1211
            }
1212
1213
            template <typename T>
1214
            inline T xor_impl(const T v0, const T v1, real_type_tag)
1215
19
            {
1216
19
               return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0);
1217
19
            }
double exprtk::details::numeric::details::xor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1215
12
            {
1216
12
               return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0);
1217
12
            }
float exprtk::details::numeric::details::xor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1215
7
            {
1216
7
               return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0);
1217
7
            }
1218
1219
            template <typename T>
1220
            inline T xor_impl(const T v0, const T v1, int_type_tag)
1221
            {
1222
               return v0 ^ v1;
1223
            }
1224
1225
            template <typename T>
1226
            inline T xnor_impl(const T v0, const T v1, real_type_tag)
1227
20
            {
1228
20
               const bool v0_true = is_true_impl(v0);
1229
20
               const bool v1_true = is_true_impl(v1);
1230
1231
20
               if ((v0_true &&  v1_true) || (!v0_true && !v1_true))
1232
9
                  return T(1);
1233
11
               else
1234
11
                  return T(0);
1235
20
            }
double exprtk::details::numeric::details::xnor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1227
12
            {
1228
12
               const bool v0_true = is_true_impl(v0);
1229
12
               const bool v1_true = is_true_impl(v1);
1230
1231
12
               if ((v0_true &&  v1_true) || (!v0_true && !v1_true))
1232
6
                  return T(1);
1233
6
               else
1234
6
                  return T(0);
1235
12
            }
float exprtk::details::numeric::details::xnor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1227
8
            {
1228
8
               const bool v0_true = is_true_impl(v0);
1229
8
               const bool v1_true = is_true_impl(v1);
1230
1231
8
               if ((v0_true &&  v1_true) || (!v0_true && !v1_true))
1232
3
                  return T(1);
1233
5
               else
1234
5
                  return T(0);
1235
8
            }
1236
1237
            template <typename T>
1238
            inline T xnor_impl(const T v0, const T v1, int_type_tag)
1239
            {
1240
               const bool v0_true = is_true_impl(v0);
1241
               const bool v1_true = is_true_impl(v1);
1242
1243
               if ((v0_true &&  v1_true) || (!v0_true && !v1_true))
1244
                  return T(1);
1245
               else
1246
                  return T(0);
1247
            }
1248
1249
            #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER)
1250
            #define exprtk_define_erf(TT, impl)                \
1251
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)
1252
1253
            exprtk_define_erf(float      , ::erff)
1254
            exprtk_define_erf(double     , ::erf )
1255
            exprtk_define_erf(long double, ::erfl)
1256
            #undef exprtk_define_erf
1257
            #endif
1258
1259
            template <typename T>
1260
            inline T erf_impl(const T v, real_type_tag)
1261
0
            {
1262
               #if defined(_MSC_VER) && (_MSC_VER < 1900)
1263
               // Credits: Abramowitz & Stegun Equations 7.1.25-28
1264
               static const T c[] =
1265
               {
1266
                  T( 1.26551223), T(1.00002368),
1267
                  T( 0.37409196), T(0.09678418),
1268
                  T(-0.18628806), T(0.27886807),
1269
                  T(-1.13520398), T(1.48851587),
1270
                  T(-0.82215223), T(0.17087277)
1271
               };
1272
1273
               const T t = T(1) / (T(1) + T(0.5) * abs_impl(v,real_type_tag()));
1274
1275
               const T result = T(1) - t * std::exp((-v * v) -
1276
                                            c[0] + t * (c[1] + t *
1277
                                           (c[2] + t * (c[3] + t *
1278
                                           (c[4] + t * (c[5] + t *
1279
                                           (c[6] + t * (c[7] + t *
1280
                                           (c[8] + t * (c[9]))))))))));
1281
1282
               return (v >= T(0)) ? result : -result;
1283
               #else
1284
0
               return erf_impl(v);
1285
0
               #endif
1286
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)
1287
1288
            template <typename T>
1289
            inline T erf_impl(const T v, int_type_tag)
1290
            {
1291
               return erf_impl(static_cast<double>(v),real_type_tag());
1292
            }
1293
1294
            #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER)
1295
            #define exprtk_define_erfc(TT, impl)                \
1296
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)
1297
1298
            exprtk_define_erfc(float      ,::erfcf)
1299
            exprtk_define_erfc(double     ,::erfc )
1300
            exprtk_define_erfc(long double,::erfcl)
1301
            #undef exprtk_define_erfc
1302
            #endif
1303
1304
            template <typename T>
1305
            inline T erfc_impl(const T v, real_type_tag)
1306
0
            {
1307
               #if defined(_MSC_VER) && (_MSC_VER < 1900)
1308
               return T(1) - erf_impl(v,real_type_tag());
1309
               #else
1310
0
               return erfc_impl(v);
1311
0
               #endif
1312
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)
1313
1314
            template <typename T>
1315
            inline T erfc_impl(const T v, int_type_tag)
1316
            {
1317
               return erfc_impl(static_cast<double>(v),real_type_tag());
1318
            }
1319
1320
            template <typename T>
1321
            inline T ncdf_impl(const T v, real_type_tag)
1322
0
            {
1323
0
               return T(0.5) * erfc_impl(-(v / T(numeric::constant::sqrt2)),real_type_tag());
1324
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)
1325
1326
            template <typename T>
1327
            inline T ncdf_impl(const T v, int_type_tag)
1328
            {
1329
               return ncdf_impl(static_cast<double>(v),real_type_tag());
1330
            }
1331
1332
            template <typename T>
1333
            inline T sinc_impl(const T v, real_type_tag)
1334
0
            {
1335
0
               if (std::abs(v) >= std::numeric_limits<T>::epsilon())
1336
0
                   return(std::sin(v) / v);
1337
0
               else
1338
0
                  return T(1);
1339
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)
1340
1341
            template <typename T>
1342
            inline T sinc_impl(const T v, int_type_tag)
1343
            {
1344
               return sinc_impl(static_cast<double>(v),real_type_tag());
1345
            }
1346
1347
            #if __cplusplus >= 201103L
1348
            template <typename T>
1349
            inline T acosh_impl(const T v, real_type_tag)
1350
0
            {
1351
0
               return std::acosh(v);
1352
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)
1353
1354
            template <typename T>
1355
            inline T asinh_impl(const T v, real_type_tag)
1356
0
            {
1357
0
               return std::asinh(v);
1358
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)
1359
1360
            template <typename T>
1361
            inline T atanh_impl(const T v, real_type_tag)
1362
0
            {
1363
0
               return std::atanh(v);
1364
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)
1365
1366
            template <typename T>
1367
            inline T trunc_impl(const T v, real_type_tag)
1368
0
            {
1369
0
               return std::trunc(v);
1370
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)
1371
            #else
1372
            template <typename T>
1373
            inline T acosh_impl(const T v, real_type_tag)
1374
            {
1375
               return std::log(v + std::sqrt((v * v) - T(1)));
1376
            }
1377
1378
            template <typename T>
1379
            inline T asinh_impl(const T v, real_type_tag)
1380
            {
1381
               return std::log(v + std::sqrt((v * v) + T(1)));
1382
            }
1383
1384
            template <typename T>
1385
            inline T atanh_impl(const T v, real_type_tag)
1386
            {
1387
               return (std::log(T(1) + v) - std::log(T(1) - v)) / T(2);
1388
            }
1389
1390
            template <typename T>
1391
            inline T trunc_impl(const T v, real_type_tag)
1392
            {
1393
               return T(static_cast<long long>(v));
1394
            }
1395
            #endif
1396
1397
2
            template <typename T> inline T  acos_impl(const T v, real_type_tag) { return std::acos (v); }
double exprtk::details::numeric::details::acos_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1397
1
            template <typename T> inline T  acos_impl(const T v, real_type_tag) { return std::acos (v); }
float exprtk::details::numeric::details::acos_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1397
1
            template <typename T> inline T  acos_impl(const T v, real_type_tag) { return std::acos (v); }
1398
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)
1399
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)
1400
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)
1401
18
            template <typename T> inline T   cos_impl(const T v, real_type_tag) { return std::cos  (v); }
double exprtk::details::numeric::details::cos_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1401
9
            template <typename T> inline T   cos_impl(const T v, real_type_tag) { return std::cos  (v); }
float exprtk::details::numeric::details::cos_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1401
9
            template <typename T> inline T   cos_impl(const T v, real_type_tag) { return std::cos  (v); }
1402
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)
1403
8
            template <typename T> inline T   exp_impl(const T v, real_type_tag) { return std::exp  (v); }
double exprtk::details::numeric::details::exp_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1403
5
            template <typename T> inline T   exp_impl(const T v, real_type_tag) { return std::exp  (v); }
float exprtk::details::numeric::details::exp_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1403
3
            template <typename T> inline T   exp_impl(const T v, real_type_tag) { return std::exp  (v); }
1404
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)
1405
6
            template <typename T> inline T   log_impl(const T v, real_type_tag) { return std::log  (v); }
double exprtk::details::numeric::details::log_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1405
3
            template <typename T> inline T   log_impl(const T v, real_type_tag) { return std::log  (v); }
float exprtk::details::numeric::details::log_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1405
3
            template <typename T> inline T   log_impl(const T v, real_type_tag) { return std::log  (v); }
1406
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)
1407
2
            template <typename T> inline T  log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); }
double exprtk::details::numeric::details::log2_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1407
1
            template <typename T> inline T  log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); }
float exprtk::details::numeric::details::log2_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1407
1
            template <typename T> inline T  log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); }
1408
53.8k
            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
1408
31.0k
            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
1408
22.7k
            template <typename T> inline T   neg_impl(const T v, real_type_tag) { return -v;            }
1409
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)
1410
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)
1411
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)
1412
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)
1413
2
            template <typename T> inline T   tan_impl(const T v, real_type_tag) { return std::tan  (v); }
double exprtk::details::numeric::details::tan_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1413
2
            template <typename T> inline T   tan_impl(const T v, real_type_tag) { return std::tan  (v); }
Unexecuted instantiation: float exprtk::details::numeric::details::tan_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1414
2
            template <typename T> inline T  tanh_impl(const T v, real_type_tag) { return std::tanh (v); }
double exprtk::details::numeric::details::tanh_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1414
1
            template <typename T> inline T  tanh_impl(const T v, real_type_tag) { return std::tanh (v); }
float exprtk::details::numeric::details::tanh_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1414
1
            template <typename T> inline T  tanh_impl(const T v, real_type_tag) { return std::tanh (v); }
1415
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)
1416
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)
1417
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)
1418
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)
1419
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)
1420
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)
1421
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)
1422
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)
1423
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)
1424
1425
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
1425
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
1425
1
            template <typename T> inline T   const_pi_impl(real_type_tag) { return T(numeric::constant::pi);            }
1426
            template <typename T> inline T    const_e_impl(real_type_tag) { return T(numeric::constant::e);             }
1427
            template <typename T> inline T const_qnan_impl(real_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1428
1429
            template <typename T> inline T   abs_impl(const T v, int_type_tag) { return ((v >= T(0)) ? v : -v); }
1430
            template <typename T> inline T   exp_impl(const T v, int_type_tag) { return std::exp  (v); }
1431
            template <typename T> inline T   log_impl(const T v, int_type_tag) { return std::log  (v); }
1432
            template <typename T> inline T log10_impl(const T v, int_type_tag) { return std::log10(v); }
1433
            template <typename T> inline T  log2_impl(const T v, int_type_tag) { return std::log(v)/T(numeric::constant::log2); }
1434
            template <typename T> inline T   neg_impl(const T v, int_type_tag) { return -v;            }
1435
            template <typename T> inline T   pos_impl(const T v, int_type_tag) { return +v;            }
1436
            template <typename T> inline T  ceil_impl(const T v, int_type_tag) { return v;             }
1437
            template <typename T> inline T floor_impl(const T v, int_type_tag) { return v;             }
1438
            template <typename T> inline T round_impl(const T v, int_type_tag) { return v;             }
1439
            template <typename T> inline T  notl_impl(const T v, int_type_tag) { return !v;            }
1440
            template <typename T> inline T  sqrt_impl(const T v, int_type_tag) { return std::sqrt (v); }
1441
            template <typename T> inline T  frac_impl(const T  , int_type_tag) { return T(0);          }
1442
            template <typename T> inline T trunc_impl(const T v, int_type_tag) { return v;             }
1443
            template <typename T> inline T  acos_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1444
            template <typename T> inline T acosh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1445
            template <typename T> inline T  asin_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1446
            template <typename T> inline T asinh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1447
            template <typename T> inline T  atan_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1448
            template <typename T> inline T atanh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1449
            template <typename T> inline T   cos_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1450
            template <typename T> inline T  cosh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1451
            template <typename T> inline T   sin_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1452
            template <typename T> inline T  sinh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1453
            template <typename T> inline T   tan_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1454
            template <typename T> inline T  tanh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1455
            template <typename T> inline T   cot_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1456
            template <typename T> inline T   sec_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1457
            template <typename T> inline T   csc_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1458
1459
            template <typename T>
1460
            inline bool is_integer_impl(const T& v, real_type_tag)
1461
46.6k
            {
1462
46.6k
               return std::equal_to<T>()(T(0),std::fmod(v,T(1)));
1463
46.6k
            }
bool exprtk::details::numeric::details::is_integer_impl<double>(double const&, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1461
23.5k
            {
1462
23.5k
               return std::equal_to<T>()(T(0),std::fmod(v,T(1)));
1463
23.5k
            }
bool exprtk::details::numeric::details::is_integer_impl<float>(float const&, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1461
23.0k
            {
1462
23.0k
               return std::equal_to<T>()(T(0),std::fmod(v,T(1)));
1463
23.0k
            }
1464
1465
            template <typename T>
1466
            inline bool is_integer_impl(const T&, int_type_tag)
1467
            {
1468
               return true;
1469
            }
1470
         }
1471
1472
         template <typename Type>
1473
         struct numeric_info { enum { length = 0, size = 32, bound_length = 0, min_exp = 0, max_exp = 0 }; };
1474
1475
         template <> struct numeric_info<int        > { enum { length = 10, size = 16, bound_length = 9 }; };
1476
         template <> struct numeric_info<float      > { enum { min_exp =  -38, max_exp =  +38 }; };
1477
         template <> struct numeric_info<double     > { enum { min_exp = -308, max_exp = +308 }; };
1478
         template <> struct numeric_info<long double> { enum { min_exp = -308, max_exp = +308 }; };
1479
1480
         template <typename T>
1481
         inline int to_int32(const T v)
1482
46.4k
         {
1483
46.4k
            const typename details::number_type<T>::type num_type;
1484
46.4k
            return to_int32_impl(v, num_type);
1485
46.4k
         }
int exprtk::details::numeric::to_int32<double>(double)
Line
Count
Source
1482
23.5k
         {
1483
23.5k
            const typename details::number_type<T>::type num_type;
1484
23.5k
            return to_int32_impl(v, num_type);
1485
23.5k
         }
int exprtk::details::numeric::to_int32<float>(float)
Line
Count
Source
1482
22.9k
         {
1483
22.9k
            const typename details::number_type<T>::type num_type;
1484
22.9k
            return to_int32_impl(v, num_type);
1485
22.9k
         }
1486
1487
         template <typename T>
1488
         inline _int64_t to_int64(const T v)
1489
72
         {
1490
72
            const typename details::number_type<T>::type num_type;
1491
72
            return to_int64_impl(v, num_type);
1492
72
         }
long long exprtk::details::numeric::to_int64<double>(double)
Line
Count
Source
1489
36
         {
1490
36
            const typename details::number_type<T>::type num_type;
1491
36
            return to_int64_impl(v, num_type);
1492
36
         }
long long exprtk::details::numeric::to_int64<float>(float)
Line
Count
Source
1489
36
         {
1490
36
            const typename details::number_type<T>::type num_type;
1491
36
            return to_int64_impl(v, num_type);
1492
36
         }
1493
1494
         template <typename T>
1495
         inline _uint64_t to_uint64(const T v)
1496
0
         {
1497
0
            const typename details::number_type<T>::type num_type;
1498
0
            return to_uint64_impl(v, num_type);
1499
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)
1500
1501
         template <typename T>
1502
         inline bool is_nan(const T v)
1503
2
         {
1504
2
            const typename details::number_type<T>::type num_type;
1505
2
            return is_nan_impl(v, num_type);
1506
2
         }
bool exprtk::details::numeric::is_nan<double>(double)
Line
Count
Source
1503
1
         {
1504
1
            const typename details::number_type<T>::type num_type;
1505
1
            return is_nan_impl(v, num_type);
1506
1
         }
bool exprtk::details::numeric::is_nan<float>(float)
Line
Count
Source
1503
1
         {
1504
1
            const typename details::number_type<T>::type num_type;
1505
1
            return is_nan_impl(v, num_type);
1506
1
         }
1507
1508
         template <typename T>
1509
         inline T min(const T v0, const T v1)
1510
         {
1511
            const typename details::number_type<T>::type num_type;
1512
            return min_impl(v0, v1, num_type);
1513
         }
1514
1515
         template <typename T>
1516
         inline T max(const T v0, const T v1)
1517
         {
1518
            const typename details::number_type<T>::type num_type;
1519
            return max_impl(v0, v1, num_type);
1520
         }
1521
1522
         template <typename T>
1523
         inline T equal(const T v0, const T v1)
1524
0
         {
1525
0
            const typename details::number_type<T>::type num_type;
1526
0
            return equal_impl(v0, v1, num_type);
1527
0
         }
Unexecuted instantiation: double exprtk::details::numeric::equal<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::equal<float>(float, float)
1528
1529
         template <typename T>
1530
         inline T nequal(const T v0, const T v1)
1531
0
         {
1532
0
            const typename details::number_type<T>::type num_type;
1533
0
            return nequal_impl(v0, v1, num_type);
1534
0
         }
Unexecuted instantiation: double exprtk::details::numeric::nequal<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::nequal<float>(float, float)
1535
1536
         template <typename T>
1537
         inline T modulus(const T v0, const T v1)
1538
5.80k
         {
1539
5.80k
            const typename details::number_type<T>::type num_type;
1540
5.80k
            return modulus_impl(v0, v1, num_type);
1541
5.80k
         }
double exprtk::details::numeric::modulus<double>(double, double)
Line
Count
Source
1538
5.45k
         {
1539
5.45k
            const typename details::number_type<T>::type num_type;
1540
5.45k
            return modulus_impl(v0, v1, num_type);
1541
5.45k
         }
float exprtk::details::numeric::modulus<float>(float, float)
Line
Count
Source
1538
352
         {
1539
352
            const typename details::number_type<T>::type num_type;
1540
352
            return modulus_impl(v0, v1, num_type);
1541
352
         }
1542
1543
         template <typename T>
1544
         inline T pow(const T v0, const T v1)
1545
1.72k
         {
1546
1.72k
            const typename details::number_type<T>::type num_type;
1547
1.72k
            return pow_impl(v0, v1, num_type);
1548
1.72k
         }
double exprtk::details::numeric::pow<double>(double, double)
Line
Count
Source
1545
893
         {
1546
893
            const typename details::number_type<T>::type num_type;
1547
893
            return pow_impl(v0, v1, num_type);
1548
893
         }
float exprtk::details::numeric::pow<float>(float, float)
Line
Count
Source
1545
831
         {
1546
831
            const typename details::number_type<T>::type num_type;
1547
831
            return pow_impl(v0, v1, num_type);
1548
831
         }
1549
1550
         template <typename T>
1551
         inline T logn(const T v0, const T v1)
1552
0
         {
1553
0
            const typename details::number_type<T>::type num_type;
1554
0
            return logn_impl(v0, v1, num_type);
1555
0
         }
Unexecuted instantiation: double exprtk::details::numeric::logn<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::logn<float>(float, float)
1556
1557
         template <typename T>
1558
         inline T root(const T v0, const T v1)
1559
0
         {
1560
0
            const typename details::number_type<T>::type num_type;
1561
0
            return root_impl(v0, v1, num_type);
1562
0
         }
Unexecuted instantiation: double exprtk::details::numeric::root<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::root<float>(float, float)
1563
1564
         template <typename T>
1565
         inline T roundn(const T v0, const T v1)
1566
0
         {
1567
0
            const typename details::number_type<T>::type num_type;
1568
0
            return roundn_impl(v0, v1, num_type);
1569
0
         }
Unexecuted instantiation: double exprtk::details::numeric::roundn<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::roundn<float>(float, float)
1570
1571
         template <typename T>
1572
         inline T hypot(const T v0, const T v1)
1573
0
         {
1574
0
            const typename details::number_type<T>::type num_type;
1575
0
            return hypot_impl(v0, v1, num_type);
1576
0
         }
Unexecuted instantiation: double exprtk::details::numeric::hypot<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::hypot<float>(float, float)
1577
1578
         template <typename T>
1579
         inline T atan2(const T v0, const T v1)
1580
0
         {
1581
0
            const typename details::number_type<T>::type num_type;
1582
0
            return atan2_impl(v0, v1, num_type);
1583
0
         }
Unexecuted instantiation: double exprtk::details::numeric::atan2<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::atan2<float>(float, float)
1584
1585
         template <typename T>
1586
         inline T shr(const T v0, const T v1)
1587
0
         {
1588
0
            const typename details::number_type<T>::type num_type;
1589
0
            return shr_impl(v0, v1, num_type);
1590
0
         }
Unexecuted instantiation: double exprtk::details::numeric::shr<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::shr<float>(float, float)
1591
1592
         template <typename T>
1593
         inline T shl(const T v0, const T v1)
1594
0
         {
1595
0
            const typename details::number_type<T>::type num_type;
1596
0
            return shl_impl(v0, v1, num_type);
1597
0
         }
Unexecuted instantiation: double exprtk::details::numeric::shl<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::shl<float>(float, float)
1598
1599
         template <typename T>
1600
         inline T and_opr(const T v0, const T v1)
1601
22
         {
1602
22
            const typename details::number_type<T>::type num_type;
1603
22
            return and_impl(v0, v1, num_type);
1604
22
         }
double exprtk::details::numeric::and_opr<double>(double, double)
Line
Count
Source
1601
11
         {
1602
11
            const typename details::number_type<T>::type num_type;
1603
11
            return and_impl(v0, v1, num_type);
1604
11
         }
float exprtk::details::numeric::and_opr<float>(float, float)
Line
Count
Source
1601
11
         {
1602
11
            const typename details::number_type<T>::type num_type;
1603
11
            return and_impl(v0, v1, num_type);
1604
11
         }
1605
1606
         template <typename T>
1607
         inline T nand_opr(const T v0, const T v1)
1608
9
         {
1609
9
            const typename details::number_type<T>::type num_type;
1610
9
            return nand_impl(v0, v1, num_type);
1611
9
         }
double exprtk::details::numeric::nand_opr<double>(double, double)
Line
Count
Source
1608
5
         {
1609
5
            const typename details::number_type<T>::type num_type;
1610
5
            return nand_impl(v0, v1, num_type);
1611
5
         }
float exprtk::details::numeric::nand_opr<float>(float, float)
Line
Count
Source
1608
4
         {
1609
4
            const typename details::number_type<T>::type num_type;
1610
4
            return nand_impl(v0, v1, num_type);
1611
4
         }
1612
1613
         template <typename T>
1614
         inline T or_opr(const T v0, const T v1)
1615
4
         {
1616
4
            const typename details::number_type<T>::type num_type;
1617
4
            return or_impl(v0, v1, num_type);
1618
4
         }
double exprtk::details::numeric::or_opr<double>(double, double)
Line
Count
Source
1615
2
         {
1616
2
            const typename details::number_type<T>::type num_type;
1617
2
            return or_impl(v0, v1, num_type);
1618
2
         }
float exprtk::details::numeric::or_opr<float>(float, float)
Line
Count
Source
1615
2
         {
1616
2
            const typename details::number_type<T>::type num_type;
1617
2
            return or_impl(v0, v1, num_type);
1618
2
         }
1619
1620
         template <typename T>
1621
         inline T nor_opr(const T v0, const T v1)
1622
0
         {
1623
0
            const typename details::number_type<T>::type num_type;
1624
0
            return nor_impl(v0, v1, num_type);
1625
0
         }
Unexecuted instantiation: double exprtk::details::numeric::nor_opr<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::nor_opr<float>(float, float)
1626
1627
         template <typename T>
1628
         inline T xor_opr(const T v0, const T v1)
1629
19
         {
1630
19
            const typename details::number_type<T>::type num_type;
1631
19
            return xor_impl(v0, v1, num_type);
1632
19
         }
double exprtk::details::numeric::xor_opr<double>(double, double)
Line
Count
Source
1629
12
         {
1630
12
            const typename details::number_type<T>::type num_type;
1631
12
            return xor_impl(v0, v1, num_type);
1632
12
         }
float exprtk::details::numeric::xor_opr<float>(float, float)
Line
Count
Source
1629
7
         {
1630
7
            const typename details::number_type<T>::type num_type;
1631
7
            return xor_impl(v0, v1, num_type);
1632
7
         }
1633
1634
         template <typename T>
1635
         inline T xnor_opr(const T v0, const T v1)
1636
20
         {
1637
20
            const typename details::number_type<T>::type num_type;
1638
20
            return xnor_impl(v0, v1, num_type);
1639
20
         }
double exprtk::details::numeric::xnor_opr<double>(double, double)
Line
Count
Source
1636
12
         {
1637
12
            const typename details::number_type<T>::type num_type;
1638
12
            return xnor_impl(v0, v1, num_type);
1639
12
         }
float exprtk::details::numeric::xnor_opr<float>(float, float)
Line
Count
Source
1636
8
         {
1637
8
            const typename details::number_type<T>::type num_type;
1638
8
            return xnor_impl(v0, v1, num_type);
1639
8
         }
1640
1641
         template <typename T>
1642
         inline bool is_integer(const T v)
1643
46.6k
         {
1644
46.6k
            const typename details::number_type<T>::type num_type;
1645
46.6k
            return is_integer_impl(v, num_type);
1646
46.6k
         }
bool exprtk::details::numeric::is_integer<double>(double)
Line
Count
Source
1643
23.5k
         {
1644
23.5k
            const typename details::number_type<T>::type num_type;
1645
23.5k
            return is_integer_impl(v, num_type);
1646
23.5k
         }
bool exprtk::details::numeric::is_integer<float>(float)
Line
Count
Source
1643
23.0k
         {
1644
23.0k
            const typename details::number_type<T>::type num_type;
1645
23.0k
            return is_integer_impl(v, num_type);
1646
23.0k
         }
1647
1648
         template <typename T, unsigned int N>
1649
         struct fast_exp
1650
         {
1651
            static inline T result(T v)
1652
1.69k
            {
1653
1.69k
               unsigned int k = N;
1654
1.69k
               T l = T(1);
1655
1656
10.8k
               while (k)
1657
9.17k
               {
1658
9.17k
                  if (1 == (k % 2))
1659
5.18k
                  {
1660
5.18k
                     l *= v;
1661
5.18k
                     --k;
1662
5.18k
                  }
1663
1664
9.17k
                  v *= v;
1665
9.17k
                  k /= 2;
1666
9.17k
               }
1667
1668
1.69k
               return l;
1669
1.69k
            }
exprtk::details::numeric::fast_exp<double, 11u>::result(double)
Line
Count
Source
1652
24
            {
1653
24
               unsigned int k = N;
1654
24
               T l = T(1);
1655
1656
120
               while (k)
1657
96
               {
1658
96
                  if (1 == (k % 2))
1659
72
                  {
1660
72
                     l *= v;
1661
72
                     --k;
1662
72
                  }
1663
1664
96
                  v *= v;
1665
96
                  k /= 2;
1666
96
               }
1667
1668
24
               return l;
1669
24
            }
exprtk::details::numeric::fast_exp<double, 12u>::result(double)
Line
Count
Source
1652
25
            {
1653
25
               unsigned int k = N;
1654
25
               T l = T(1);
1655
1656
125
               while (k)
1657
100
               {
1658
100
                  if (1 == (k % 2))
1659
50
                  {
1660
50
                     l *= v;
1661
50
                     --k;
1662
50
                  }
1663
1664
100
                  v *= v;
1665
100
                  k /= 2;
1666
100
               }
1667
1668
25
               return l;
1669
25
            }
exprtk::details::numeric::fast_exp<double, 13u>::result(double)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
80
               while (k)
1657
64
               {
1658
64
                  if (1 == (k % 2))
1659
48
                  {
1660
48
                     l *= v;
1661
48
                     --k;
1662
48
                  }
1663
1664
64
                  v *= v;
1665
64
                  k /= 2;
1666
64
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<double, 14u>::result(double)
Line
Count
Source
1652
20
            {
1653
20
               unsigned int k = N;
1654
20
               T l = T(1);
1655
1656
100
               while (k)
1657
80
               {
1658
80
                  if (1 == (k % 2))
1659
60
                  {
1660
60
                     l *= v;
1661
60
                     --k;
1662
60
                  }
1663
1664
80
                  v *= v;
1665
80
                  k /= 2;
1666
80
               }
1667
1668
20
               return l;
1669
20
            }
exprtk::details::numeric::fast_exp<double, 15u>::result(double)
Line
Count
Source
1652
22
            {
1653
22
               unsigned int k = N;
1654
22
               T l = T(1);
1655
1656
110
               while (k)
1657
88
               {
1658
88
                  if (1 == (k % 2))
1659
88
                  {
1660
88
                     l *= v;
1661
88
                     --k;
1662
88
                  }
1663
1664
88
                  v *= v;
1665
88
                  k /= 2;
1666
88
               }
1667
1668
22
               return l;
1669
22
            }
exprtk::details::numeric::fast_exp<double, 16u>::result(double)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
96
               while (k)
1657
80
               {
1658
80
                  if (1 == (k % 2))
1659
16
                  {
1660
16
                     l *= v;
1661
16
                     --k;
1662
16
                  }
1663
1664
80
                  v *= v;
1665
80
                  k /= 2;
1666
80
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<double, 17u>::result(double)
Line
Count
Source
1652
22
            {
1653
22
               unsigned int k = N;
1654
22
               T l = T(1);
1655
1656
132
               while (k)
1657
110
               {
1658
110
                  if (1 == (k % 2))
1659
44
                  {
1660
44
                     l *= v;
1661
44
                     --k;
1662
44
                  }
1663
1664
110
                  v *= v;
1665
110
                  k /= 2;
1666
110
               }
1667
1668
22
               return l;
1669
22
            }
exprtk::details::numeric::fast_exp<double, 18u>::result(double)
Line
Count
Source
1652
15
            {
1653
15
               unsigned int k = N;
1654
15
               T l = T(1);
1655
1656
90
               while (k)
1657
75
               {
1658
75
                  if (1 == (k % 2))
1659
30
                  {
1660
30
                     l *= v;
1661
30
                     --k;
1662
30
                  }
1663
1664
75
                  v *= v;
1665
75
                  k /= 2;
1666
75
               }
1667
1668
15
               return l;
1669
15
            }
exprtk::details::numeric::fast_exp<double, 19u>::result(double)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
108
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
54
                  {
1660
54
                     l *= v;
1661
54
                     --k;
1662
54
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<double, 20u>::result(double)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
96
               while (k)
1657
80
               {
1658
80
                  if (1 == (k % 2))
1659
32
                  {
1660
32
                     l *= v;
1661
32
                     --k;
1662
32
                  }
1663
1664
80
                  v *= v;
1665
80
                  k /= 2;
1666
80
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<double, 21u>::result(double)
Line
Count
Source
1652
28
            {
1653
28
               unsigned int k = N;
1654
28
               T l = T(1);
1655
1656
168
               while (k)
1657
140
               {
1658
140
                  if (1 == (k % 2))
1659
84
                  {
1660
84
                     l *= v;
1661
84
                     --k;
1662
84
                  }
1663
1664
140
                  v *= v;
1665
140
                  k /= 2;
1666
140
               }
1667
1668
28
               return l;
1669
28
            }
exprtk::details::numeric::fast_exp<double, 22u>::result(double)
Line
Count
Source
1652
19
            {
1653
19
               unsigned int k = N;
1654
19
               T l = T(1);
1655
1656
114
               while (k)
1657
95
               {
1658
95
                  if (1 == (k % 2))
1659
57
                  {
1660
57
                     l *= v;
1661
57
                     --k;
1662
57
                  }
1663
1664
95
                  v *= v;
1665
95
                  k /= 2;
1666
95
               }
1667
1668
19
               return l;
1669
19
            }
exprtk::details::numeric::fast_exp<double, 23u>::result(double)
Line
Count
Source
1652
21
            {
1653
21
               unsigned int k = N;
1654
21
               T l = T(1);
1655
1656
126
               while (k)
1657
105
               {
1658
105
                  if (1 == (k % 2))
1659
84
                  {
1660
84
                     l *= v;
1661
84
                     --k;
1662
84
                  }
1663
1664
105
                  v *= v;
1665
105
                  k /= 2;
1666
105
               }
1667
1668
21
               return l;
1669
21
            }
exprtk::details::numeric::fast_exp<double, 24u>::result(double)
Line
Count
Source
1652
20
            {
1653
20
               unsigned int k = N;
1654
20
               T l = T(1);
1655
1656
120
               while (k)
1657
100
               {
1658
100
                  if (1 == (k % 2))
1659
40
                  {
1660
40
                     l *= v;
1661
40
                     --k;
1662
40
                  }
1663
1664
100
                  v *= v;
1665
100
                  k /= 2;
1666
100
               }
1667
1668
20
               return l;
1669
20
            }
exprtk::details::numeric::fast_exp<double, 25u>::result(double)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
78
               while (k)
1657
65
               {
1658
65
                  if (1 == (k % 2))
1659
39
                  {
1660
39
                     l *= v;
1661
39
                     --k;
1662
39
                  }
1663
1664
65
                  v *= v;
1665
65
                  k /= 2;
1666
65
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<double, 26u>::result(double)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
108
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
54
                  {
1660
54
                     l *= v;
1661
54
                     --k;
1662
54
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<double, 27u>::result(double)
Line
Count
Source
1652
10
            {
1653
10
               unsigned int k = N;
1654
10
               T l = T(1);
1655
1656
60
               while (k)
1657
50
               {
1658
50
                  if (1 == (k % 2))
1659
40
                  {
1660
40
                     l *= v;
1661
40
                     --k;
1662
40
                  }
1663
1664
50
                  v *= v;
1665
50
                  k /= 2;
1666
50
               }
1667
1668
10
               return l;
1669
10
            }
exprtk::details::numeric::fast_exp<double, 28u>::result(double)
Line
Count
Source
1652
20
            {
1653
20
               unsigned int k = N;
1654
20
               T l = T(1);
1655
1656
120
               while (k)
1657
100
               {
1658
100
                  if (1 == (k % 2))
1659
60
                  {
1660
60
                     l *= v;
1661
60
                     --k;
1662
60
                  }
1663
1664
100
                  v *= v;
1665
100
                  k /= 2;
1666
100
               }
1667
1668
20
               return l;
1669
20
            }
exprtk::details::numeric::fast_exp<double, 29u>::result(double)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
108
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
72
                  {
1660
72
                     l *= v;
1661
72
                     --k;
1662
72
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<double, 30u>::result(double)
Line
Count
Source
1652
11
            {
1653
11
               unsigned int k = N;
1654
11
               T l = T(1);
1655
1656
66
               while (k)
1657
55
               {
1658
55
                  if (1 == (k % 2))
1659
44
                  {
1660
44
                     l *= v;
1661
44
                     --k;
1662
44
                  }
1663
1664
55
                  v *= v;
1665
55
                  k /= 2;
1666
55
               }
1667
1668
11
               return l;
1669
11
            }
exprtk::details::numeric::fast_exp<double, 31u>::result(double)
Line
Count
Source
1652
15
            {
1653
15
               unsigned int k = N;
1654
15
               T l = T(1);
1655
1656
90
               while (k)
1657
75
               {
1658
75
                  if (1 == (k % 2))
1659
75
                  {
1660
75
                     l *= v;
1661
75
                     --k;
1662
75
                  }
1663
1664
75
                  v *= v;
1665
75
                  k /= 2;
1666
75
               }
1667
1668
15
               return l;
1669
15
            }
exprtk::details::numeric::fast_exp<double, 32u>::result(double)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
112
               while (k)
1657
96
               {
1658
96
                  if (1 == (k % 2))
1659
16
                  {
1660
16
                     l *= v;
1661
16
                     --k;
1662
16
                  }
1663
1664
96
                  v *= v;
1665
96
                  k /= 2;
1666
96
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<double, 33u>::result(double)
Line
Count
Source
1652
25
            {
1653
25
               unsigned int k = N;
1654
25
               T l = T(1);
1655
1656
175
               while (k)
1657
150
               {
1658
150
                  if (1 == (k % 2))
1659
50
                  {
1660
50
                     l *= v;
1661
50
                     --k;
1662
50
                  }
1663
1664
150
                  v *= v;
1665
150
                  k /= 2;
1666
150
               }
1667
1668
25
               return l;
1669
25
            }
exprtk::details::numeric::fast_exp<double, 34u>::result(double)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
126
               while (k)
1657
108
               {
1658
108
                  if (1 == (k % 2))
1659
36
                  {
1660
36
                     l *= v;
1661
36
                     --k;
1662
36
                  }
1663
1664
108
                  v *= v;
1665
108
                  k /= 2;
1666
108
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<double, 35u>::result(double)
Line
Count
Source
1652
19
            {
1653
19
               unsigned int k = N;
1654
19
               T l = T(1);
1655
1656
133
               while (k)
1657
114
               {
1658
114
                  if (1 == (k % 2))
1659
57
                  {
1660
57
                     l *= v;
1661
57
                     --k;
1662
57
                  }
1663
1664
114
                  v *= v;
1665
114
                  k /= 2;
1666
114
               }
1667
1668
19
               return l;
1669
19
            }
exprtk::details::numeric::fast_exp<double, 36u>::result(double)
Line
Count
Source
1652
14
            {
1653
14
               unsigned int k = N;
1654
14
               T l = T(1);
1655
1656
98
               while (k)
1657
84
               {
1658
84
                  if (1 == (k % 2))
1659
28
                  {
1660
28
                     l *= v;
1661
28
                     --k;
1662
28
                  }
1663
1664
84
                  v *= v;
1665
84
                  k /= 2;
1666
84
               }
1667
1668
14
               return l;
1669
14
            }
exprtk::details::numeric::fast_exp<double, 37u>::result(double)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
39
                  {
1660
39
                     l *= v;
1661
39
                     --k;
1662
39
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<double, 38u>::result(double)
Line
Count
Source
1652
23
            {
1653
23
               unsigned int k = N;
1654
23
               T l = T(1);
1655
1656
161
               while (k)
1657
138
               {
1658
138
                  if (1 == (k % 2))
1659
69
                  {
1660
69
                     l *= v;
1661
69
                     --k;
1662
69
                  }
1663
1664
138
                  v *= v;
1665
138
                  k /= 2;
1666
138
               }
1667
1668
23
               return l;
1669
23
            }
exprtk::details::numeric::fast_exp<double, 39u>::result(double)
Line
Count
Source
1652
23
            {
1653
23
               unsigned int k = N;
1654
23
               T l = T(1);
1655
1656
161
               while (k)
1657
138
               {
1658
138
                  if (1 == (k % 2))
1659
92
                  {
1660
92
                     l *= v;
1661
92
                     --k;
1662
92
                  }
1663
1664
138
                  v *= v;
1665
138
                  k /= 2;
1666
138
               }
1667
1668
23
               return l;
1669
23
            }
exprtk::details::numeric::fast_exp<double, 40u>::result(double)
Line
Count
Source
1652
22
            {
1653
22
               unsigned int k = N;
1654
22
               T l = T(1);
1655
1656
154
               while (k)
1657
132
               {
1658
132
                  if (1 == (k % 2))
1659
44
                  {
1660
44
                     l *= v;
1661
44
                     --k;
1662
44
                  }
1663
1664
132
                  v *= v;
1665
132
                  k /= 2;
1666
132
               }
1667
1668
22
               return l;
1669
22
            }
exprtk::details::numeric::fast_exp<double, 41u>::result(double)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
126
               while (k)
1657
108
               {
1658
108
                  if (1 == (k % 2))
1659
54
                  {
1660
54
                     l *= v;
1661
54
                     --k;
1662
54
                  }
1663
1664
108
                  v *= v;
1665
108
                  k /= 2;
1666
108
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<double, 42u>::result(double)
Line
Count
Source
1652
21
            {
1653
21
               unsigned int k = N;
1654
21
               T l = T(1);
1655
1656
147
               while (k)
1657
126
               {
1658
126
                  if (1 == (k % 2))
1659
63
                  {
1660
63
                     l *= v;
1661
63
                     --k;
1662
63
                  }
1663
1664
126
                  v *= v;
1665
126
                  k /= 2;
1666
126
               }
1667
1668
21
               return l;
1669
21
            }
exprtk::details::numeric::fast_exp<double, 43u>::result(double)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
112
               while (k)
1657
96
               {
1658
96
                  if (1 == (k % 2))
1659
64
                  {
1660
64
                     l *= v;
1661
64
                     --k;
1662
64
                  }
1663
1664
96
                  v *= v;
1665
96
                  k /= 2;
1666
96
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<double, 44u>::result(double)
Line
Count
Source
1652
29
            {
1653
29
               unsigned int k = N;
1654
29
               T l = T(1);
1655
1656
203
               while (k)
1657
174
               {
1658
174
                  if (1 == (k % 2))
1659
87
                  {
1660
87
                     l *= v;
1661
87
                     --k;
1662
87
                  }
1663
1664
174
                  v *= v;
1665
174
                  k /= 2;
1666
174
               }
1667
1668
29
               return l;
1669
29
            }
exprtk::details::numeric::fast_exp<double, 45u>::result(double)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
52
                  {
1660
52
                     l *= v;
1661
52
                     --k;
1662
52
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<double, 46u>::result(double)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
52
                  {
1660
52
                     l *= v;
1661
52
                     --k;
1662
52
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<double, 47u>::result(double)
Line
Count
Source
1652
12
            {
1653
12
               unsigned int k = N;
1654
12
               T l = T(1);
1655
1656
84
               while (k)
1657
72
               {
1658
72
                  if (1 == (k % 2))
1659
60
                  {
1660
60
                     l *= v;
1661
60
                     --k;
1662
60
                  }
1663
1664
72
                  v *= v;
1665
72
                  k /= 2;
1666
72
               }
1667
1668
12
               return l;
1669
12
            }
exprtk::details::numeric::fast_exp<double, 48u>::result(double)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
126
               while (k)
1657
108
               {
1658
108
                  if (1 == (k % 2))
1659
36
                  {
1660
36
                     l *= v;
1661
36
                     --k;
1662
36
                  }
1663
1664
108
                  v *= v;
1665
108
                  k /= 2;
1666
108
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<double, 49u>::result(double)
Line
Count
Source
1652
11
            {
1653
11
               unsigned int k = N;
1654
11
               T l = T(1);
1655
1656
77
               while (k)
1657
66
               {
1658
66
                  if (1 == (k % 2))
1659
33
                  {
1660
33
                     l *= v;
1661
33
                     --k;
1662
33
                  }
1663
1664
66
                  v *= v;
1665
66
                  k /= 2;
1666
66
               }
1667
1668
11
               return l;
1669
11
            }
exprtk::details::numeric::fast_exp<double, 50u>::result(double)
Line
Count
Source
1652
19
            {
1653
19
               unsigned int k = N;
1654
19
               T l = T(1);
1655
1656
133
               while (k)
1657
114
               {
1658
114
                  if (1 == (k % 2))
1659
57
                  {
1660
57
                     l *= v;
1661
57
                     --k;
1662
57
                  }
1663
1664
114
                  v *= v;
1665
114
                  k /= 2;
1666
114
               }
1667
1668
19
               return l;
1669
19
            }
exprtk::details::numeric::fast_exp<double, 51u>::result(double)
Line
Count
Source
1652
8
            {
1653
8
               unsigned int k = N;
1654
8
               T l = T(1);
1655
1656
56
               while (k)
1657
48
               {
1658
48
                  if (1 == (k % 2))
1659
32
                  {
1660
32
                     l *= v;
1661
32
                     --k;
1662
32
                  }
1663
1664
48
                  v *= v;
1665
48
                  k /= 2;
1666
48
               }
1667
1668
8
               return l;
1669
8
            }
exprtk::details::numeric::fast_exp<double, 52u>::result(double)
Line
Count
Source
1652
15
            {
1653
15
               unsigned int k = N;
1654
15
               T l = T(1);
1655
1656
105
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
45
                  {
1660
45
                     l *= v;
1661
45
                     --k;
1662
45
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
15
               return l;
1669
15
            }
exprtk::details::numeric::fast_exp<double, 53u>::result(double)
Line
Count
Source
1652
12
            {
1653
12
               unsigned int k = N;
1654
12
               T l = T(1);
1655
1656
84
               while (k)
1657
72
               {
1658
72
                  if (1 == (k % 2))
1659
48
                  {
1660
48
                     l *= v;
1661
48
                     --k;
1662
48
                  }
1663
1664
72
                  v *= v;
1665
72
                  k /= 2;
1666
72
               }
1667
1668
12
               return l;
1669
12
            }
exprtk::details::numeric::fast_exp<double, 54u>::result(double)
Line
Count
Source
1652
11
            {
1653
11
               unsigned int k = N;
1654
11
               T l = T(1);
1655
1656
77
               while (k)
1657
66
               {
1658
66
                  if (1 == (k % 2))
1659
44
                  {
1660
44
                     l *= v;
1661
44
                     --k;
1662
44
                  }
1663
1664
66
                  v *= v;
1665
66
                  k /= 2;
1666
66
               }
1667
1668
11
               return l;
1669
11
            }
exprtk::details::numeric::fast_exp<double, 55u>::result(double)
Line
Count
Source
1652
7
            {
1653
7
               unsigned int k = N;
1654
7
               T l = T(1);
1655
1656
49
               while (k)
1657
42
               {
1658
42
                  if (1 == (k % 2))
1659
35
                  {
1660
35
                     l *= v;
1661
35
                     --k;
1662
35
                  }
1663
1664
42
                  v *= v;
1665
42
                  k /= 2;
1666
42
               }
1667
1668
7
               return l;
1669
7
            }
exprtk::details::numeric::fast_exp<double, 56u>::result(double)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
39
                  {
1660
39
                     l *= v;
1661
39
                     --k;
1662
39
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<double, 57u>::result(double)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
52
                  {
1660
52
                     l *= v;
1661
52
                     --k;
1662
52
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<double, 58u>::result(double)
Line
Count
Source
1652
15
            {
1653
15
               unsigned int k = N;
1654
15
               T l = T(1);
1655
1656
105
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
60
                  {
1660
60
                     l *= v;
1661
60
                     --k;
1662
60
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
15
               return l;
1669
15
            }
exprtk::details::numeric::fast_exp<double, 59u>::result(double)
Line
Count
Source
1652
14
            {
1653
14
               unsigned int k = N;
1654
14
               T l = T(1);
1655
1656
98
               while (k)
1657
84
               {
1658
84
                  if (1 == (k % 2))
1659
70
                  {
1660
70
                     l *= v;
1661
70
                     --k;
1662
70
                  }
1663
1664
84
                  v *= v;
1665
84
                  k /= 2;
1666
84
               }
1667
1668
14
               return l;
1669
14
            }
exprtk::details::numeric::fast_exp<double, 60u>::result(double)
Line
Count
Source
1652
9
            {
1653
9
               unsigned int k = N;
1654
9
               T l = T(1);
1655
1656
63
               while (k)
1657
54
               {
1658
54
                  if (1 == (k % 2))
1659
36
                  {
1660
36
                     l *= v;
1661
36
                     --k;
1662
36
                  }
1663
1664
54
                  v *= v;
1665
54
                  k /= 2;
1666
54
               }
1667
1668
9
               return l;
1669
9
            }
exprtk::details::numeric::fast_exp<float, 11u>::result(float)
Line
Count
Source
1652
24
            {
1653
24
               unsigned int k = N;
1654
24
               T l = T(1);
1655
1656
120
               while (k)
1657
96
               {
1658
96
                  if (1 == (k % 2))
1659
72
                  {
1660
72
                     l *= v;
1661
72
                     --k;
1662
72
                  }
1663
1664
96
                  v *= v;
1665
96
                  k /= 2;
1666
96
               }
1667
1668
24
               return l;
1669
24
            }
exprtk::details::numeric::fast_exp<float, 12u>::result(float)
Line
Count
Source
1652
25
            {
1653
25
               unsigned int k = N;
1654
25
               T l = T(1);
1655
1656
125
               while (k)
1657
100
               {
1658
100
                  if (1 == (k % 2))
1659
50
                  {
1660
50
                     l *= v;
1661
50
                     --k;
1662
50
                  }
1663
1664
100
                  v *= v;
1665
100
                  k /= 2;
1666
100
               }
1667
1668
25
               return l;
1669
25
            }
exprtk::details::numeric::fast_exp<float, 13u>::result(float)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
80
               while (k)
1657
64
               {
1658
64
                  if (1 == (k % 2))
1659
48
                  {
1660
48
                     l *= v;
1661
48
                     --k;
1662
48
                  }
1663
1664
64
                  v *= v;
1665
64
                  k /= 2;
1666
64
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<float, 14u>::result(float)
Line
Count
Source
1652
20
            {
1653
20
               unsigned int k = N;
1654
20
               T l = T(1);
1655
1656
100
               while (k)
1657
80
               {
1658
80
                  if (1 == (k % 2))
1659
60
                  {
1660
60
                     l *= v;
1661
60
                     --k;
1662
60
                  }
1663
1664
80
                  v *= v;
1665
80
                  k /= 2;
1666
80
               }
1667
1668
20
               return l;
1669
20
            }
exprtk::details::numeric::fast_exp<float, 15u>::result(float)
Line
Count
Source
1652
22
            {
1653
22
               unsigned int k = N;
1654
22
               T l = T(1);
1655
1656
110
               while (k)
1657
88
               {
1658
88
                  if (1 == (k % 2))
1659
88
                  {
1660
88
                     l *= v;
1661
88
                     --k;
1662
88
                  }
1663
1664
88
                  v *= v;
1665
88
                  k /= 2;
1666
88
               }
1667
1668
22
               return l;
1669
22
            }
exprtk::details::numeric::fast_exp<float, 16u>::result(float)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
96
               while (k)
1657
80
               {
1658
80
                  if (1 == (k % 2))
1659
16
                  {
1660
16
                     l *= v;
1661
16
                     --k;
1662
16
                  }
1663
1664
80
                  v *= v;
1665
80
                  k /= 2;
1666
80
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<float, 17u>::result(float)
Line
Count
Source
1652
22
            {
1653
22
               unsigned int k = N;
1654
22
               T l = T(1);
1655
1656
132
               while (k)
1657
110
               {
1658
110
                  if (1 == (k % 2))
1659
44
                  {
1660
44
                     l *= v;
1661
44
                     --k;
1662
44
                  }
1663
1664
110
                  v *= v;
1665
110
                  k /= 2;
1666
110
               }
1667
1668
22
               return l;
1669
22
            }
exprtk::details::numeric::fast_exp<float, 18u>::result(float)
Line
Count
Source
1652
15
            {
1653
15
               unsigned int k = N;
1654
15
               T l = T(1);
1655
1656
90
               while (k)
1657
75
               {
1658
75
                  if (1 == (k % 2))
1659
30
                  {
1660
30
                     l *= v;
1661
30
                     --k;
1662
30
                  }
1663
1664
75
                  v *= v;
1665
75
                  k /= 2;
1666
75
               }
1667
1668
15
               return l;
1669
15
            }
exprtk::details::numeric::fast_exp<float, 19u>::result(float)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
108
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
54
                  {
1660
54
                     l *= v;
1661
54
                     --k;
1662
54
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<float, 20u>::result(float)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
96
               while (k)
1657
80
               {
1658
80
                  if (1 == (k % 2))
1659
32
                  {
1660
32
                     l *= v;
1661
32
                     --k;
1662
32
                  }
1663
1664
80
                  v *= v;
1665
80
                  k /= 2;
1666
80
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<float, 21u>::result(float)
Line
Count
Source
1652
28
            {
1653
28
               unsigned int k = N;
1654
28
               T l = T(1);
1655
1656
168
               while (k)
1657
140
               {
1658
140
                  if (1 == (k % 2))
1659
84
                  {
1660
84
                     l *= v;
1661
84
                     --k;
1662
84
                  }
1663
1664
140
                  v *= v;
1665
140
                  k /= 2;
1666
140
               }
1667
1668
28
               return l;
1669
28
            }
exprtk::details::numeric::fast_exp<float, 22u>::result(float)
Line
Count
Source
1652
19
            {
1653
19
               unsigned int k = N;
1654
19
               T l = T(1);
1655
1656
114
               while (k)
1657
95
               {
1658
95
                  if (1 == (k % 2))
1659
57
                  {
1660
57
                     l *= v;
1661
57
                     --k;
1662
57
                  }
1663
1664
95
                  v *= v;
1665
95
                  k /= 2;
1666
95
               }
1667
1668
19
               return l;
1669
19
            }
exprtk::details::numeric::fast_exp<float, 23u>::result(float)
Line
Count
Source
1652
21
            {
1653
21
               unsigned int k = N;
1654
21
               T l = T(1);
1655
1656
126
               while (k)
1657
105
               {
1658
105
                  if (1 == (k % 2))
1659
84
                  {
1660
84
                     l *= v;
1661
84
                     --k;
1662
84
                  }
1663
1664
105
                  v *= v;
1665
105
                  k /= 2;
1666
105
               }
1667
1668
21
               return l;
1669
21
            }
exprtk::details::numeric::fast_exp<float, 24u>::result(float)
Line
Count
Source
1652
20
            {
1653
20
               unsigned int k = N;
1654
20
               T l = T(1);
1655
1656
120
               while (k)
1657
100
               {
1658
100
                  if (1 == (k % 2))
1659
40
                  {
1660
40
                     l *= v;
1661
40
                     --k;
1662
40
                  }
1663
1664
100
                  v *= v;
1665
100
                  k /= 2;
1666
100
               }
1667
1668
20
               return l;
1669
20
            }
exprtk::details::numeric::fast_exp<float, 25u>::result(float)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
78
               while (k)
1657
65
               {
1658
65
                  if (1 == (k % 2))
1659
39
                  {
1660
39
                     l *= v;
1661
39
                     --k;
1662
39
                  }
1663
1664
65
                  v *= v;
1665
65
                  k /= 2;
1666
65
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<float, 26u>::result(float)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
108
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
54
                  {
1660
54
                     l *= v;
1661
54
                     --k;
1662
54
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<float, 27u>::result(float)
Line
Count
Source
1652
10
            {
1653
10
               unsigned int k = N;
1654
10
               T l = T(1);
1655
1656
60
               while (k)
1657
50
               {
1658
50
                  if (1 == (k % 2))
1659
40
                  {
1660
40
                     l *= v;
1661
40
                     --k;
1662
40
                  }
1663
1664
50
                  v *= v;
1665
50
                  k /= 2;
1666
50
               }
1667
1668
10
               return l;
1669
10
            }
exprtk::details::numeric::fast_exp<float, 28u>::result(float)
Line
Count
Source
1652
20
            {
1653
20
               unsigned int k = N;
1654
20
               T l = T(1);
1655
1656
120
               while (k)
1657
100
               {
1658
100
                  if (1 == (k % 2))
1659
60
                  {
1660
60
                     l *= v;
1661
60
                     --k;
1662
60
                  }
1663
1664
100
                  v *= v;
1665
100
                  k /= 2;
1666
100
               }
1667
1668
20
               return l;
1669
20
            }
exprtk::details::numeric::fast_exp<float, 29u>::result(float)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
108
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
72
                  {
1660
72
                     l *= v;
1661
72
                     --k;
1662
72
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<float, 30u>::result(float)
Line
Count
Source
1652
11
            {
1653
11
               unsigned int k = N;
1654
11
               T l = T(1);
1655
1656
66
               while (k)
1657
55
               {
1658
55
                  if (1 == (k % 2))
1659
44
                  {
1660
44
                     l *= v;
1661
44
                     --k;
1662
44
                  }
1663
1664
55
                  v *= v;
1665
55
                  k /= 2;
1666
55
               }
1667
1668
11
               return l;
1669
11
            }
exprtk::details::numeric::fast_exp<float, 31u>::result(float)
Line
Count
Source
1652
15
            {
1653
15
               unsigned int k = N;
1654
15
               T l = T(1);
1655
1656
90
               while (k)
1657
75
               {
1658
75
                  if (1 == (k % 2))
1659
75
                  {
1660
75
                     l *= v;
1661
75
                     --k;
1662
75
                  }
1663
1664
75
                  v *= v;
1665
75
                  k /= 2;
1666
75
               }
1667
1668
15
               return l;
1669
15
            }
exprtk::details::numeric::fast_exp<float, 32u>::result(float)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
112
               while (k)
1657
96
               {
1658
96
                  if (1 == (k % 2))
1659
16
                  {
1660
16
                     l *= v;
1661
16
                     --k;
1662
16
                  }
1663
1664
96
                  v *= v;
1665
96
                  k /= 2;
1666
96
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<float, 33u>::result(float)
Line
Count
Source
1652
25
            {
1653
25
               unsigned int k = N;
1654
25
               T l = T(1);
1655
1656
175
               while (k)
1657
150
               {
1658
150
                  if (1 == (k % 2))
1659
50
                  {
1660
50
                     l *= v;
1661
50
                     --k;
1662
50
                  }
1663
1664
150
                  v *= v;
1665
150
                  k /= 2;
1666
150
               }
1667
1668
25
               return l;
1669
25
            }
exprtk::details::numeric::fast_exp<float, 34u>::result(float)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
126
               while (k)
1657
108
               {
1658
108
                  if (1 == (k % 2))
1659
36
                  {
1660
36
                     l *= v;
1661
36
                     --k;
1662
36
                  }
1663
1664
108
                  v *= v;
1665
108
                  k /= 2;
1666
108
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<float, 35u>::result(float)
Line
Count
Source
1652
19
            {
1653
19
               unsigned int k = N;
1654
19
               T l = T(1);
1655
1656
133
               while (k)
1657
114
               {
1658
114
                  if (1 == (k % 2))
1659
57
                  {
1660
57
                     l *= v;
1661
57
                     --k;
1662
57
                  }
1663
1664
114
                  v *= v;
1665
114
                  k /= 2;
1666
114
               }
1667
1668
19
               return l;
1669
19
            }
exprtk::details::numeric::fast_exp<float, 36u>::result(float)
Line
Count
Source
1652
14
            {
1653
14
               unsigned int k = N;
1654
14
               T l = T(1);
1655
1656
98
               while (k)
1657
84
               {
1658
84
                  if (1 == (k % 2))
1659
28
                  {
1660
28
                     l *= v;
1661
28
                     --k;
1662
28
                  }
1663
1664
84
                  v *= v;
1665
84
                  k /= 2;
1666
84
               }
1667
1668
14
               return l;
1669
14
            }
exprtk::details::numeric::fast_exp<float, 37u>::result(float)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
39
                  {
1660
39
                     l *= v;
1661
39
                     --k;
1662
39
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<float, 38u>::result(float)
Line
Count
Source
1652
23
            {
1653
23
               unsigned int k = N;
1654
23
               T l = T(1);
1655
1656
161
               while (k)
1657
138
               {
1658
138
                  if (1 == (k % 2))
1659
69
                  {
1660
69
                     l *= v;
1661
69
                     --k;
1662
69
                  }
1663
1664
138
                  v *= v;
1665
138
                  k /= 2;
1666
138
               }
1667
1668
23
               return l;
1669
23
            }
exprtk::details::numeric::fast_exp<float, 39u>::result(float)
Line
Count
Source
1652
23
            {
1653
23
               unsigned int k = N;
1654
23
               T l = T(1);
1655
1656
161
               while (k)
1657
138
               {
1658
138
                  if (1 == (k % 2))
1659
92
                  {
1660
92
                     l *= v;
1661
92
                     --k;
1662
92
                  }
1663
1664
138
                  v *= v;
1665
138
                  k /= 2;
1666
138
               }
1667
1668
23
               return l;
1669
23
            }
exprtk::details::numeric::fast_exp<float, 40u>::result(float)
Line
Count
Source
1652
22
            {
1653
22
               unsigned int k = N;
1654
22
               T l = T(1);
1655
1656
154
               while (k)
1657
132
               {
1658
132
                  if (1 == (k % 2))
1659
44
                  {
1660
44
                     l *= v;
1661
44
                     --k;
1662
44
                  }
1663
1664
132
                  v *= v;
1665
132
                  k /= 2;
1666
132
               }
1667
1668
22
               return l;
1669
22
            }
exprtk::details::numeric::fast_exp<float, 41u>::result(float)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
126
               while (k)
1657
108
               {
1658
108
                  if (1 == (k % 2))
1659
54
                  {
1660
54
                     l *= v;
1661
54
                     --k;
1662
54
                  }
1663
1664
108
                  v *= v;
1665
108
                  k /= 2;
1666
108
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<float, 42u>::result(float)
Line
Count
Source
1652
21
            {
1653
21
               unsigned int k = N;
1654
21
               T l = T(1);
1655
1656
147
               while (k)
1657
126
               {
1658
126
                  if (1 == (k % 2))
1659
63
                  {
1660
63
                     l *= v;
1661
63
                     --k;
1662
63
                  }
1663
1664
126
                  v *= v;
1665
126
                  k /= 2;
1666
126
               }
1667
1668
21
               return l;
1669
21
            }
exprtk::details::numeric::fast_exp<float, 43u>::result(float)
Line
Count
Source
1652
16
            {
1653
16
               unsigned int k = N;
1654
16
               T l = T(1);
1655
1656
112
               while (k)
1657
96
               {
1658
96
                  if (1 == (k % 2))
1659
64
                  {
1660
64
                     l *= v;
1661
64
                     --k;
1662
64
                  }
1663
1664
96
                  v *= v;
1665
96
                  k /= 2;
1666
96
               }
1667
1668
16
               return l;
1669
16
            }
exprtk::details::numeric::fast_exp<float, 44u>::result(float)
Line
Count
Source
1652
29
            {
1653
29
               unsigned int k = N;
1654
29
               T l = T(1);
1655
1656
203
               while (k)
1657
174
               {
1658
174
                  if (1 == (k % 2))
1659
87
                  {
1660
87
                     l *= v;
1661
87
                     --k;
1662
87
                  }
1663
1664
174
                  v *= v;
1665
174
                  k /= 2;
1666
174
               }
1667
1668
29
               return l;
1669
29
            }
exprtk::details::numeric::fast_exp<float, 45u>::result(float)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
52
                  {
1660
52
                     l *= v;
1661
52
                     --k;
1662
52
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<float, 46u>::result(float)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
52
                  {
1660
52
                     l *= v;
1661
52
                     --k;
1662
52
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<float, 47u>::result(float)
Line
Count
Source
1652
12
            {
1653
12
               unsigned int k = N;
1654
12
               T l = T(1);
1655
1656
84
               while (k)
1657
72
               {
1658
72
                  if (1 == (k % 2))
1659
60
                  {
1660
60
                     l *= v;
1661
60
                     --k;
1662
60
                  }
1663
1664
72
                  v *= v;
1665
72
                  k /= 2;
1666
72
               }
1667
1668
12
               return l;
1669
12
            }
exprtk::details::numeric::fast_exp<float, 48u>::result(float)
Line
Count
Source
1652
18
            {
1653
18
               unsigned int k = N;
1654
18
               T l = T(1);
1655
1656
126
               while (k)
1657
108
               {
1658
108
                  if (1 == (k % 2))
1659
36
                  {
1660
36
                     l *= v;
1661
36
                     --k;
1662
36
                  }
1663
1664
108
                  v *= v;
1665
108
                  k /= 2;
1666
108
               }
1667
1668
18
               return l;
1669
18
            }
exprtk::details::numeric::fast_exp<float, 49u>::result(float)
Line
Count
Source
1652
11
            {
1653
11
               unsigned int k = N;
1654
11
               T l = T(1);
1655
1656
77
               while (k)
1657
66
               {
1658
66
                  if (1 == (k % 2))
1659
33
                  {
1660
33
                     l *= v;
1661
33
                     --k;
1662
33
                  }
1663
1664
66
                  v *= v;
1665
66
                  k /= 2;
1666
66
               }
1667
1668
11
               return l;
1669
11
            }
exprtk::details::numeric::fast_exp<float, 50u>::result(float)
Line
Count
Source
1652
19
            {
1653
19
               unsigned int k = N;
1654
19
               T l = T(1);
1655
1656
133
               while (k)
1657
114
               {
1658
114
                  if (1 == (k % 2))
1659
57
                  {
1660
57
                     l *= v;
1661
57
                     --k;
1662
57
                  }
1663
1664
114
                  v *= v;
1665
114
                  k /= 2;
1666
114
               }
1667
1668
19
               return l;
1669
19
            }
exprtk::details::numeric::fast_exp<float, 51u>::result(float)
Line
Count
Source
1652
8
            {
1653
8
               unsigned int k = N;
1654
8
               T l = T(1);
1655
1656
56
               while (k)
1657
48
               {
1658
48
                  if (1 == (k % 2))
1659
32
                  {
1660
32
                     l *= v;
1661
32
                     --k;
1662
32
                  }
1663
1664
48
                  v *= v;
1665
48
                  k /= 2;
1666
48
               }
1667
1668
8
               return l;
1669
8
            }
exprtk::details::numeric::fast_exp<float, 52u>::result(float)
Line
Count
Source
1652
15
            {
1653
15
               unsigned int k = N;
1654
15
               T l = T(1);
1655
1656
105
               while (k)
1657
90
               {
1658
90
                  if (1 == (k % 2))
1659
45
                  {
1660
45
                     l *= v;
1661
45
                     --k;
1662
45
                  }
1663
1664
90
                  v *= v;
1665
90
                  k /= 2;
1666
90
               }
1667
1668
15
               return l;
1669
15
            }
exprtk::details::numeric::fast_exp<float, 53u>::result(float)
Line
Count
Source
1652
12
            {
1653
12
               unsigned int k = N;
1654
12
               T l = T(1);
1655
1656
84
               while (k)
1657
72
               {
1658
72
                  if (1 == (k % 2))
1659
48
                  {
1660
48
                     l *= v;
1661
48
                     --k;
1662
48
                  }
1663
1664
72
                  v *= v;
1665
72
                  k /= 2;
1666
72
               }
1667
1668
12
               return l;
1669
12
            }
exprtk::details::numeric::fast_exp<float, 54u>::result(float)
Line
Count
Source
1652
11
            {
1653
11
               unsigned int k = N;
1654
11
               T l = T(1);
1655
1656
77
               while (k)
1657
66
               {
1658
66
                  if (1 == (k % 2))
1659
44
                  {
1660
44
                     l *= v;
1661
44
                     --k;
1662
44
                  }
1663
1664
66
                  v *= v;
1665
66
                  k /= 2;
1666
66
               }
1667
1668
11
               return l;
1669
11
            }
exprtk::details::numeric::fast_exp<float, 55u>::result(float)
Line
Count
Source
1652
7
            {
1653
7
               unsigned int k = N;
1654
7
               T l = T(1);
1655
1656
49
               while (k)
1657
42
               {
1658
42
                  if (1 == (k % 2))
1659
35
                  {
1660
35
                     l *= v;
1661
35
                     --k;
1662
35
                  }
1663
1664
42
                  v *= v;
1665
42
                  k /= 2;
1666
42
               }
1667
1668
7
               return l;
1669
7
            }
exprtk::details::numeric::fast_exp<float, 56u>::result(float)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
39
                  {
1660
39
                     l *= v;
1661
39
                     --k;
1662
39
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<float, 57u>::result(float)
Line
Count
Source
1652
13
            {
1653
13
               unsigned int k = N;
1654
13
               T l = T(1);
1655
1656
91
               while (k)
1657
78
               {
1658
78
                  if (1 == (k % 2))
1659
52
                  {
1660
52
                     l *= v;
1661
52
                     --k;
1662
52
                  }
1663
1664
78
                  v *= v;
1665
78
                  k /= 2;
1666
78
               }
1667
1668
13
               return l;
1669
13
            }
exprtk::details::numeric::fast_exp<float, 58u>::result(float)
Line
Count
Source
1652
14
            {
1653
14
               unsigned int k = N;
1654
14
               T l = T(1);
1655
1656
98
               while (k)
1657
84
               {
1658
84
                  if (1 == (k % 2))
1659
56
                  {
1660
56
                     l *= v;
1661
56
                     --k;
1662
56
                  }
1663
1664
84
                  v *= v;
1665
84
                  k /= 2;
1666
84
               }
1667
1668
14
               return l;
1669
14
            }
exprtk::details::numeric::fast_exp<float, 59u>::result(float)
Line
Count
Source
1652
14
            {
1653
14
               unsigned int k = N;
1654
14
               T l = T(1);
1655
1656
98
               while (k)
1657
84
               {
1658
84
                  if (1 == (k % 2))
1659
70
                  {
1660
70
                     l *= v;
1661
70
                     --k;
1662
70
                  }
1663
1664
84
                  v *= v;
1665
84
                  k /= 2;
1666
84
               }
1667
1668
14
               return l;
1669
14
            }
exprtk::details::numeric::fast_exp<float, 60u>::result(float)
Line
Count
Source
1652
9
            {
1653
9
               unsigned int k = N;
1654
9
               T l = T(1);
1655
1656
63
               while (k)
1657
54
               {
1658
54
                  if (1 == (k % 2))
1659
36
                  {
1660
36
                     l *= v;
1661
36
                     --k;
1662
36
                  }
1663
1664
54
                  v *= v;
1665
54
                  k /= 2;
1666
54
               }
1667
1668
9
               return l;
1669
9
            }
1670
         };
1671
1672
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
1672
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
1672
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; } };
1673
78
         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
1673
39
         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
1673
39
         template <typename T> struct fast_exp<T, 9> { static inline T result(const T v) { return fast_exp<T,8>::result(v) * v; } };
1674
160
         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
1674
80
         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
1674
80
         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; } };
1675
112
         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
1675
56
         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
1675
56
         template <typename T> struct fast_exp<T, 7> { static inline T result(const T v) { return fast_exp<T,6>::result(v) * v; } };
1676
240
         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
1676
120
         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
1676
120
         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; } };
1677
202
         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
1677
101
         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
1677
101
         template <typename T> struct fast_exp<T, 5> { static inline T result(const T v) { return fast_exp<T,4>::result(v) * v; } };
1678
546
         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
1678
273
         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
1678
273
         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; } };
1679
428
         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
1679
214
         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
1679
214
         template <typename T> struct fast_exp<T, 3> { static inline T result(const T v) { return v * v * v; } };
1680
64
         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
1680
32
         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
1680
32
         template <typename T> struct fast_exp<T, 2> { static inline T result(const T v) { return v * v;     } };
1681
97
         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
1681
49
         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
1681
48
         template <typename T> struct fast_exp<T, 1> { static inline T result(const T v) { return v;         } };
1682
         template <typename T> struct fast_exp<T, 0> { static inline T result(const T  ) { return T(1);      } };
1683
1684
         #define exprtk_define_unary_function(FunctionName)        \
1685
         template <typename T>                                     \
1686
         inline T FunctionName (const T v)                         \
1687
147k
         {                                                         \
1688
147k
            const typename details::number_type<T>::type num_type; \
1689
147k
            return  FunctionName##_impl(v,num_type);               \
1690
147k
         }                                                         \
double exprtk::details::numeric::abs<double>(double)
Line
Count
Source
1687
47.3k
         {                                                         \
1688
47.3k
            const typename details::number_type<T>::type num_type; \
1689
47.3k
            return  FunctionName##_impl(v,num_type);               \
1690
47.3k
         }                                                         \
double exprtk::details::numeric::acos<double>(double)
Line
Count
Source
1687
1
         {                                                         \
1688
1
            const typename details::number_type<T>::type num_type; \
1689
1
            return  FunctionName##_impl(v,num_type);               \
1690
1
         }                                                         \
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)
double exprtk::details::numeric::cos<double>(double)
Line
Count
Source
1687
9
         {                                                         \
1688
9
            const typename details::number_type<T>::type num_type; \
1689
9
            return  FunctionName##_impl(v,num_type);               \
1690
9
         }                                                         \
Unexecuted instantiation: double exprtk::details::numeric::cosh<double>(double)
double exprtk::details::numeric::exp<double>(double)
Line
Count
Source
1687
5
         {                                                         \
1688
5
            const typename details::number_type<T>::type num_type; \
1689
5
            return  FunctionName##_impl(v,num_type);               \
1690
5
         }                                                         \
Unexecuted instantiation: double exprtk::details::numeric::expm1<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::floor<double>(double)
double exprtk::details::numeric::log<double>(double)
Line
Count
Source
1687
3
         {                                                         \
1688
3
            const typename details::number_type<T>::type num_type; \
1689
3
            return  FunctionName##_impl(v,num_type);               \
1690
3
         }                                                         \
Unexecuted instantiation: double exprtk::details::numeric::log10<double>(double)
double exprtk::details::numeric::log2<double>(double)
Line
Count
Source
1687
1
         {                                                         \
1688
1
            const typename details::number_type<T>::type num_type; \
1689
1
            return  FunctionName##_impl(v,num_type);               \
1690
1
         }                                                         \
Unexecuted instantiation: double exprtk::details::numeric::log1p<double>(double)
double exprtk::details::numeric::neg<double>(double)
Line
Count
Source
1687
31.0k
         {                                                         \
1688
31.0k
            const typename details::number_type<T>::type num_type; \
1689
31.0k
            return  FunctionName##_impl(v,num_type);               \
1690
31.0k
         }                                                         \
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)
double exprtk::details::numeric::tan<double>(double)
Line
Count
Source
1687
2
         {                                                         \
1688
2
            const typename details::number_type<T>::type num_type; \
1689
2
            return  FunctionName##_impl(v,num_type);               \
1690
2
         }                                                         \
double exprtk::details::numeric::tanh<double>(double)
Line
Count
Source
1687
1
         {                                                         \
1688
1
            const typename details::number_type<T>::type num_type; \
1689
1
            return  FunctionName##_impl(v,num_type);               \
1690
1
         }                                                         \
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
1687
46.1k
         {                                                         \
1688
46.1k
            const typename details::number_type<T>::type num_type; \
1689
46.1k
            return  FunctionName##_impl(v,num_type);               \
1690
46.1k
         }                                                         \
float exprtk::details::numeric::acos<float>(float)
Line
Count
Source
1687
1
         {                                                         \
1688
1
            const typename details::number_type<T>::type num_type; \
1689
1
            return  FunctionName##_impl(v,num_type);               \
1690
1
         }                                                         \
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)
float exprtk::details::numeric::cos<float>(float)
Line
Count
Source
1687
9
         {                                                         \
1688
9
            const typename details::number_type<T>::type num_type; \
1689
9
            return  FunctionName##_impl(v,num_type);               \
1690
9
         }                                                         \
Unexecuted instantiation: float exprtk::details::numeric::cosh<float>(float)
float exprtk::details::numeric::exp<float>(float)
Line
Count
Source
1687
3
         {                                                         \
1688
3
            const typename details::number_type<T>::type num_type; \
1689
3
            return  FunctionName##_impl(v,num_type);               \
1690
3
         }                                                         \
Unexecuted instantiation: float exprtk::details::numeric::expm1<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::floor<float>(float)
float exprtk::details::numeric::log<float>(float)
Line
Count
Source
1687
3
         {                                                         \
1688
3
            const typename details::number_type<T>::type num_type; \
1689
3
            return  FunctionName##_impl(v,num_type);               \
1690
3
         }                                                         \
Unexecuted instantiation: float exprtk::details::numeric::log10<float>(float)
float exprtk::details::numeric::log2<float>(float)
Line
Count
Source
1687
1
         {                                                         \
1688
1
            const typename details::number_type<T>::type num_type; \
1689
1
            return  FunctionName##_impl(v,num_type);               \
1690
1
         }                                                         \
Unexecuted instantiation: float exprtk::details::numeric::log1p<float>(float)
float exprtk::details::numeric::neg<float>(float)
Line
Count
Source
1687
22.7k
         {                                                         \
1688
22.7k
            const typename details::number_type<T>::type num_type; \
1689
22.7k
            return  FunctionName##_impl(v,num_type);               \
1690
22.7k
         }                                                         \
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)
float exprtk::details::numeric::tanh<float>(float)
Line
Count
Source
1687
1
         {                                                         \
1688
1
            const typename details::number_type<T>::type num_type; \
1689
1
            return  FunctionName##_impl(v,num_type);               \
1690
1
         }                                                         \
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)
1691
1692
         exprtk_define_unary_function(abs  )
1693
         exprtk_define_unary_function(acos )
1694
         exprtk_define_unary_function(acosh)
1695
         exprtk_define_unary_function(asin )
1696
         exprtk_define_unary_function(asinh)
1697
         exprtk_define_unary_function(atan )
1698
         exprtk_define_unary_function(atanh)
1699
         exprtk_define_unary_function(ceil )
1700
         exprtk_define_unary_function(cos  )
1701
         exprtk_define_unary_function(cosh )
1702
         exprtk_define_unary_function(exp  )
1703
         exprtk_define_unary_function(expm1)
1704
         exprtk_define_unary_function(floor)
1705
         exprtk_define_unary_function(log  )
1706
         exprtk_define_unary_function(log10)
1707
         exprtk_define_unary_function(log2 )
1708
         exprtk_define_unary_function(log1p)
1709
         exprtk_define_unary_function(neg  )
1710
         exprtk_define_unary_function(pos  )
1711
         exprtk_define_unary_function(round)
1712
         exprtk_define_unary_function(sin  )
1713
         exprtk_define_unary_function(sinc )
1714
         exprtk_define_unary_function(sinh )
1715
         exprtk_define_unary_function(sqrt )
1716
         exprtk_define_unary_function(tan  )
1717
         exprtk_define_unary_function(tanh )
1718
         exprtk_define_unary_function(cot  )
1719
         exprtk_define_unary_function(sec  )
1720
         exprtk_define_unary_function(csc  )
1721
         exprtk_define_unary_function(r2d  )
1722
         exprtk_define_unary_function(d2r  )
1723
         exprtk_define_unary_function(d2g  )
1724
         exprtk_define_unary_function(g2d  )
1725
         exprtk_define_unary_function(notl )
1726
         exprtk_define_unary_function(sgn  )
1727
         exprtk_define_unary_function(erf  )
1728
         exprtk_define_unary_function(erfc )
1729
         exprtk_define_unary_function(ncdf )
1730
         exprtk_define_unary_function(frac )
1731
         exprtk_define_unary_function(trunc)
1732
         #undef exprtk_define_unary_function
1733
      }
1734
1735
      template <typename T>
1736
      inline T compute_pow10(T d, const int exponent)
1737
1.56k
      {
1738
1.56k
         static const double fract10[] =
1739
1.56k
         {
1740
1.56k
            0.0,
1741
1.56k
            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,
1742
1.56k
            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,
1743
1.56k
            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,
1744
1.56k
            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,
1745
1.56k
            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,
1746
1.56k
            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,
1747
1.56k
            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,
1748
1.56k
            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,
1749
1.56k
            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,
1750
1.56k
            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,
1751
1.56k
            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,
1752
1.56k
            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,
1753
1.56k
            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,
1754
1.56k
            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,
1755
1.56k
            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,
1756
1.56k
            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,
1757
1.56k
            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,
1758
1.56k
            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,
1759
1.56k
            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,
1760
1.56k
            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,
1761
1.56k
            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,
1762
1.56k
            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,
1763
1.56k
            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,
1764
1.56k
            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,
1765
1.56k
            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,
1766
1.56k
            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,
1767
1.56k
            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,
1768
1.56k
            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,
1769
1.56k
            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,
1770
1.56k
            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,
1771
1.56k
            1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308
1772
1.56k
         };
1773
1774
1.56k
         static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double));
1775
1776
1.56k
         const int e = std::abs(exponent);
1777
1778
1.56k
         if (exponent >= std::numeric_limits<T>::min_exponent10)
1779
1.45k
         {
1780
1.45k
            if (e < fract10_size)
1781
1.45k
            {
1782
1.45k
               if (exponent > 0)
1783
254
                  return T(d * fract10[e]);
1784
1.20k
               else
1785
1.20k
                  return T(d / fract10[e]);
1786
1.45k
            }
1787
0
            else
1788
0
               return T(d * std::pow(10.0, 10.0 * exponent));
1789
1.45k
         }
1790
106
         else
1791
106
         {
1792
106
                     d /= T(fract10[           -std::numeric_limits<T>::min_exponent10]);
1793
106
            return T(d /    fract10[-exponent + std::numeric_limits<T>::min_exponent10]);
1794
106
         }
1795
1.56k
      }
double exprtk::details::compute_pow10<double>(double, int)
Line
Count
Source
1737
868
      {
1738
868
         static const double fract10[] =
1739
868
         {
1740
868
            0.0,
1741
868
            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,
1742
868
            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,
1743
868
            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,
1744
868
            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,
1745
868
            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,
1746
868
            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,
1747
868
            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,
1748
868
            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,
1749
868
            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,
1750
868
            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,
1751
868
            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,
1752
868
            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,
1753
868
            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,
1754
868
            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,
1755
868
            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,
1756
868
            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,
1757
868
            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,
1758
868
            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,
1759
868
            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,
1760
868
            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,
1761
868
            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,
1762
868
            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,
1763
868
            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,
1764
868
            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,
1765
868
            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,
1766
868
            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,
1767
868
            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,
1768
868
            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,
1769
868
            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,
1770
868
            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,
1771
868
            1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308
1772
868
         };
1773
1774
868
         static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double));
1775
1776
868
         const int e = std::abs(exponent);
1777
1778
868
         if (exponent >= std::numeric_limits<T>::min_exponent10)
1779
861
         {
1780
861
            if (e < fract10_size)
1781
861
            {
1782
861
               if (exponent > 0)
1783
160
                  return T(d * fract10[e]);
1784
701
               else
1785
701
                  return T(d / fract10[e]);
1786
861
            }
1787
0
            else
1788
0
               return T(d * std::pow(10.0, 10.0 * exponent));
1789
861
         }
1790
7
         else
1791
7
         {
1792
7
                     d /= T(fract10[           -std::numeric_limits<T>::min_exponent10]);
1793
7
            return T(d /    fract10[-exponent + std::numeric_limits<T>::min_exponent10]);
1794
7
         }
1795
868
      }
float exprtk::details::compute_pow10<float>(float, int)
Line
Count
Source
1737
694
      {
1738
694
         static const double fract10[] =
1739
694
         {
1740
694
            0.0,
1741
694
            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,
1742
694
            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,
1743
694
            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,
1744
694
            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,
1745
694
            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,
1746
694
            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,
1747
694
            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,
1748
694
            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,
1749
694
            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,
1750
694
            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,
1751
694
            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,
1752
694
            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,
1753
694
            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,
1754
694
            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,
1755
694
            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,
1756
694
            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,
1757
694
            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,
1758
694
            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,
1759
694
            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,
1760
694
            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,
1761
694
            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,
1762
694
            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,
1763
694
            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,
1764
694
            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,
1765
694
            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,
1766
694
            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,
1767
694
            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,
1768
694
            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,
1769
694
            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,
1770
694
            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,
1771
694
            1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308
1772
694
         };
1773
1774
694
         static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double));
1775
1776
694
         const int e = std::abs(exponent);
1777
1778
694
         if (exponent >= std::numeric_limits<T>::min_exponent10)
1779
595
         {
1780
595
            if (e < fract10_size)
1781
595
            {
1782
595
               if (exponent > 0)
1783
94
                  return T(d * fract10[e]);
1784
501
               else
1785
501
                  return T(d / fract10[e]);
1786
595
            }
1787
0
            else
1788
0
               return T(d * std::pow(10.0, 10.0 * exponent));
1789
595
         }
1790
99
         else
1791
99
         {
1792
99
                     d /= T(fract10[           -std::numeric_limits<T>::min_exponent10]);
1793
99
            return T(d /    fract10[-exponent + std::numeric_limits<T>::min_exponent10]);
1794
99
         }
1795
694
      }
1796
1797
      template <typename Iterator, typename T>
1798
      inline bool string_to_type_converter_impl_ref(Iterator& itr, const Iterator end, T& result)
1799
1.64k
      {
1800
1.64k
         if (itr == end)
1801
0
            return false;
1802
1803
1.64k
         const bool negative = ('-' == (*itr));
1804
1805
1.64k
         if (negative || ('+' == (*itr)))
1806
1.01k
         {
1807
1.01k
            if (end == ++itr)
1808
288
               return false;
1809
1.01k
         }
1810
1811
1.35k
         static const uchar_t zero = static_cast<uchar_t>('0');
1812
1813
8.90k
         while ((end != itr) && (zero == (*itr))) ++itr;
1814
1815
1.35k
         bool return_result = true;
1816
1.35k
         unsigned int digit = 0;
1817
1.35k
         const std::size_t length = static_cast<std::size_t>(std::distance(itr,end));
1818
1819
1.35k
         if (length <= 4)
1820
1.28k
         {
1821
1.28k
            switch (length)
1822
1.28k
            {
1823
               #ifdef exprtk_use_lut
1824
1825
               #define exprtk_process_digit                          \
1826
               if ((digit = details::digit_table[(int)*itr++]) < 10) \
1827
                  result = result * 10 + (digit);                    \
1828
               else                                                  \
1829
               {                                                     \
1830
                  return_result = false;                             \
1831
                  break;                                             \
1832
               }                                                     \
1833
               exprtk_fallthrough                                    \
1834
1835
               #else
1836
1837
0
               #define exprtk_process_digit        \
1838
1.44k
               if ((digit = (*itr++ - zero)) < 10) \
1839
1.44k
                  result = result * T(10) + digit; \
1840
1.44k
               else                                \
1841
1.44k
               {                                   \
1842
46
                  return_result = false;           \
1843
46
                  break;                           \
1844
46
               }                                   \
1845
1.44k
               exprtk_fallthrough                  \
1846
0
1847
0
               #endif
1848
1849
178
               case 4 : exprtk_process_digit
1850
375
               case 3 : exprtk_process_digit
1851
895
               case 2 : exprtk_process_digit
1852
1.16k
               case 1 : if ((digit = (*itr - zero))>= 10)
1853
188
                        {
1854
188
                           digit = 0;
1855
188
                           return_result = false;
1856
188
                        }
1857
1858
1.28k
               #undef exprtk_process_digit
1859
1.28k
            }
1860
1.28k
         }
1861
72
         else
1862
72
            return_result = false;
1863
1864
1.35k
         if (length && return_result)
1865
974
         {
1866
974
            result = result * 10 + static_cast<T>(digit);
1867
974
            ++itr;
1868
974
         }
1869
1870
1.35k
         result = negative ? -result : result;
1871
1.35k
         return return_result;
1872
1.35k
      }
1873
1874
      template <typename Iterator, typename T>
1875
      static inline bool parse_nan(Iterator& itr, const Iterator end, T& t)
1876
0
      {
1877
0
         typedef typename std::iterator_traits<Iterator>::value_type type;
1878
1879
0
         static const std::size_t nan_length = 3;
1880
1881
0
         if (std::distance(itr,end) != static_cast<int>(nan_length))
1882
0
            return false;
1883
1884
0
         if (static_cast<type>('n') == (*itr))
1885
0
         {
1886
0
            if (
1887
0
                 (static_cast<type>('a') != *(itr + 1)) ||
1888
0
                 (static_cast<type>('n') != *(itr + 2))
1889
0
               )
1890
0
            {
1891
0
               return false;
1892
0
            }
1893
0
         }
1894
0
         else if (
1895
0
                   (static_cast<type>('A') != *(itr + 1)) ||
1896
0
                   (static_cast<type>('N') != *(itr + 2))
1897
0
                 )
1898
0
         {
1899
0
            return false;
1900
0
         }
1901
1902
0
         t = std::numeric_limits<T>::quiet_NaN();
1903
1904
0
         return true;
1905
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&)
1906
1907
      template <typename Iterator, typename T>
1908
      static inline bool parse_inf(Iterator& itr, const Iterator end, T& t, const bool negative)
1909
0
      {
1910
0
         static const char_t inf_uc[] = "INFINITY";
1911
0
         static const char_t inf_lc[] = "infinity";
1912
0
         static const std::size_t inf_length = 8;
1913
1914
0
         const std::size_t length = static_cast<std::size_t>(std::distance(itr,end));
1915
1916
0
         if ((3 != length) && (inf_length != length))
1917
0
            return false;
1918
1919
0
         char_cptr inf_itr = ('i' == (*itr)) ? inf_lc : inf_uc;
1920
1921
0
         while (end != itr)
1922
0
         {
1923
0
            if (*inf_itr == static_cast<char_t>(*itr))
1924
0
            {
1925
0
               ++itr;
1926
0
               ++inf_itr;
1927
0
               continue;
1928
0
            }
1929
0
            else
1930
0
               return false;
1931
0
         }
1932
1933
0
         if (negative)
1934
0
            t = -std::numeric_limits<T>::infinity();
1935
0
         else
1936
0
            t =  std::numeric_limits<T>::infinity();
1937
1938
0
         return true;
1939
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)
1940
1941
      template <typename T>
1942
      inline bool valid_exponent(const int exponent, numeric::details::real_type_tag)
1943
618k
      {
1944
618k
         using namespace details::numeric;
1945
618k
         return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp);
1946
618k
      }
bool exprtk::details::valid_exponent<double>(int, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1943
375k
      {
1944
375k
         using namespace details::numeric;
1945
375k
         return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp);
1946
375k
      }
bool exprtk::details::valid_exponent<float>(int, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1943
242k
      {
1944
242k
         using namespace details::numeric;
1945
242k
         return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp);
1946
242k
      }
1947
1948
      template <typename Iterator, typename T>
1949
      inline bool string_to_real(Iterator& itr_external, const Iterator end, T& t, numeric::details::real_type_tag)
1950
618k
      {
1951
618k
         if (end == itr_external) return false;
1952
1953
618k
         Iterator itr = itr_external;
1954
1955
618k
         T d = T(0);
1956
1957
618k
         const bool negative = ('-' == (*itr));
1958
1959
618k
         if (negative || '+' == (*itr))
1960
0
         {
1961
0
            if (end == ++itr)
1962
0
               return false;
1963
0
         }
1964
1965
618k
         bool instate = false;
1966
1967
618k
         static const char_t zero = static_cast<uchar_t>('0');
1968
1969
618k
         #define parse_digit_1(d)          \
1970
2.92M
         if ((digit = (*itr - zero)) < 10) \
1971
2.92M
            { d = d * T(10) + digit; }     \
1972
2.92M
         else                              \
1973
2.92M
            { break; }                     \
1974
2.92M
         if (end == ++itr) break;          \
1975
618k
1976
618k
         #define parse_digit_2(d)          \
1977
1.19M
         if ((digit = (*itr - zero)) < 10) \
1978
1.19M
            { d = d * T(10) + digit; }     \
1979
1.19M
         else                              \
1980
1.19M
            { break; }                     \
1981
1.19M
            ++itr;                         \
1982
618k
1983
618k
         if ('.' != (*itr))
1984
617k
         {
1985
617k
            const Iterator curr = itr;
1986
1987
1.87M
            while ((end != itr) && (zero == (*itr))) ++itr;
1988
1989
1.54M
            while (end != itr)
1990
1.33M
            {
1991
1.33M
               unsigned int digit;
1992
1.33M
               parse_digit_1(d)
1993
2.11M
               parse_digit_1(d)
1994
1.86M
               parse_digit_2(d)
1995
1.86M
            }
1996
1997
617k
            if (curr != itr) instate = true;
1998
617k
         }
1999
2000
618k
         int exponent = 0;
2001
2002
618k
         if (end != itr)
2003
3.26k
         {
2004
3.26k
            if ('.' == (*itr))
2005
1.77k
            {
2006
1.77k
               const Iterator curr = ++itr;
2007
1.77k
               T tmp_d = T(0);
2008
2009
267k
               while (end != itr)
2010
266k
               {
2011
266k
                  unsigned int digit;
2012
266k
                  parse_digit_1(tmp_d)
2013
531k
                  parse_digit_1(tmp_d)
2014
530k
                  parse_digit_2(tmp_d)
2015
530k
               }
2016
2017
1.77k
               if (curr != itr)
2018
999
               {
2019
999
                  instate = true;
2020
2021
999
                  const int frac_exponent = static_cast<int>(-std::distance(curr, itr));
2022
2023
999
                  if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag()))
2024
57
                     return false;
2025
2026
942
                  d += compute_pow10(tmp_d, frac_exponent);
2027
942
               }
2028
2029
1.77k
               #undef parse_digit_1
2030
1.77k
               #undef parse_digit_2
2031
1.77k
            }
2032
2033
3.20k
            if (end != itr)
2034
1.64k
            {
2035
1.64k
               typename std::iterator_traits<Iterator>::value_type c = (*itr);
2036
2037
1.64k
               if (('e' == c) || ('E' == c))
2038
1.64k
               {
2039
1.64k
                  int exp = 0;
2040
2041
1.64k
                  if (!details::string_to_type_converter_impl_ref(++itr, end, exp))
2042
594
                  {
2043
594
                     if (end == itr)
2044
288
                        return false;
2045
306
                     else
2046
306
                        c = (*itr);
2047
594
                  }
2048
2049
1.35k
                  exponent += exp;
2050
1.35k
               }
2051
2052
1.35k
               if (end != itr)
2053
306
               {
2054
306
                  if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c))
2055
0
                     ++itr;
2056
306
                  else if ('#' == c)
2057
0
                  {
2058
0
                     if (end == ++itr)
2059
0
                        return false;
2060
0
                     else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2061
0
                     {
2062
0
                        if (('i' == (*itr)) || ('I' == (*itr)))
2063
0
                        {
2064
0
                           return parse_inf(itr, end, t, negative);
2065
0
                        }
2066
0
                        else if (('n' == (*itr)) || ('N' == (*itr)))
2067
0
                        {
2068
0
                           return parse_nan(itr, end, t);
2069
0
                        }
2070
0
                        else
2071
0
                           return false;
2072
0
                     }
2073
0
                     else
2074
0
                        return false;
2075
0
                  }
2076
306
                  else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2077
90
                  {
2078
90
                     if (('i' == (*itr)) || ('I' == (*itr)))
2079
0
                     {
2080
0
                        return parse_inf(itr, end, t, negative);
2081
0
                     }
2082
90
                     else if (('n' == (*itr)) || ('N' == (*itr)))
2083
0
                     {
2084
0
                        return parse_nan(itr, end, t);
2085
0
                     }
2086
90
                     else
2087
90
                        return false;
2088
90
                  }
2089
216
                  else
2090
216
                     return false;
2091
306
               }
2092
1.35k
            }
2093
3.20k
         }
2094
2095
617k
         if ((end != itr) || (!instate))
2096
0
            return false;
2097
617k
         else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag()))
2098
354
            return false;
2099
617k
         else if (exponent)
2100
620
            d = compute_pow10(d,exponent);
2101
2102
617k
         t = static_cast<T>((negative) ? -d : d);
2103
617k
         return true;
2104
617k
      }
bool exprtk::details::string_to_real<char const*, double>(char const*&, char const*, double&, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1950
375k
      {
1951
375k
         if (end == itr_external) return false;
1952
1953
375k
         Iterator itr = itr_external;
1954
1955
375k
         T d = T(0);
1956
1957
375k
         const bool negative = ('-' == (*itr));
1958
1959
375k
         if (negative || '+' == (*itr))
1960
0
         {
1961
0
            if (end == ++itr)
1962
0
               return false;
1963
0
         }
1964
1965
375k
         bool instate = false;
1966
1967
375k
         static const char_t zero = static_cast<uchar_t>('0');
1968
1969
375k
         #define parse_digit_1(d)          \
1970
375k
         if ((digit = (*itr - zero)) < 10) \
1971
375k
            { d = d * T(10) + digit; }     \
1972
375k
         else                              \
1973
375k
            { break; }                     \
1974
375k
         if (end == ++itr) break;          \
1975
375k
1976
375k
         #define parse_digit_2(d)          \
1977
375k
         if ((digit = (*itr - zero)) < 10) \
1978
375k
            { d = d * T(10) + digit; }     \
1979
375k
         else                              \
1980
375k
            { break; }                     \
1981
375k
            ++itr;                         \
1982
375k
1983
375k
         if ('.' != (*itr))
1984
375k
         {
1985
375k
            const Iterator curr = itr;
1986
1987
1.01M
            while ((end != itr) && (zero == (*itr))) ++itr;
1988
1989
845k
            while (end != itr)
1990
720k
            {
1991
720k
               unsigned int digit;
1992
720k
               parse_digit_1(d)
1993
1.10M
               parse_digit_1(d)
1994
940k
               parse_digit_2(d)
1995
940k
            }
1996
1997
375k
            if (curr != itr) instate = true;
1998
375k
         }
1999
2000
375k
         int exponent = 0;
2001
2002
375k
         if (end != itr)
2003
1.65k
         {
2004
1.65k
            if ('.' == (*itr))
2005
893
            {
2006
893
               const Iterator curr = ++itr;
2007
893
               T tmp_d = T(0);
2008
2009
133k
               while (end != itr)
2010
133k
               {
2011
133k
                  unsigned int digit;
2012
133k
                  parse_digit_1(tmp_d)
2013
265k
                  parse_digit_1(tmp_d)
2014
265k
                  parse_digit_2(tmp_d)
2015
265k
               }
2016
2017
893
               if (curr != itr)
2018
504
               {
2019
504
                  instate = true;
2020
2021
504
                  const int frac_exponent = static_cast<int>(-std::distance(curr, itr));
2022
2023
504
                  if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag()))
2024
4
                     return false;
2025
2026
500
                  d += compute_pow10(tmp_d, frac_exponent);
2027
500
               }
2028
2029
893
               #undef parse_digit_1
2030
893
               #undef parse_digit_2
2031
893
            }
2032
2033
1.64k
            if (end != itr)
2034
836
            {
2035
836
               typename std::iterator_traits<Iterator>::value_type c = (*itr);
2036
2037
836
               if (('e' == c) || ('E' == c))
2038
836
               {
2039
836
                  int exp = 0;
2040
2041
836
                  if (!details::string_to_type_converter_impl_ref(++itr, end, exp))
2042
297
                  {
2043
297
                     if (end == itr)
2044
144
                        return false;
2045
153
                     else
2046
153
                        c = (*itr);
2047
297
                  }
2048
2049
692
                  exponent += exp;
2050
692
               }
2051
2052
692
               if (end != itr)
2053
153
               {
2054
153
                  if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c))
2055
0
                     ++itr;
2056
153
                  else if ('#' == c)
2057
0
                  {
2058
0
                     if (end == ++itr)
2059
0
                        return false;
2060
0
                     else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2061
0
                     {
2062
0
                        if (('i' == (*itr)) || ('I' == (*itr)))
2063
0
                        {
2064
0
                           return parse_inf(itr, end, t, negative);
2065
0
                        }
2066
0
                        else if (('n' == (*itr)) || ('N' == (*itr)))
2067
0
                        {
2068
0
                           return parse_nan(itr, end, t);
2069
0
                        }
2070
0
                        else
2071
0
                           return false;
2072
0
                     }
2073
0
                     else
2074
0
                        return false;
2075
0
                  }
2076
153
                  else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2077
45
                  {
2078
45
                     if (('i' == (*itr)) || ('I' == (*itr)))
2079
0
                     {
2080
0
                        return parse_inf(itr, end, t, negative);
2081
0
                     }
2082
45
                     else if (('n' == (*itr)) || ('N' == (*itr)))
2083
0
                     {
2084
0
                        return parse_nan(itr, end, t);
2085
0
                     }
2086
45
                     else
2087
45
                        return false;
2088
45
                  }
2089
108
                  else
2090
108
                     return false;
2091
153
               }
2092
692
            }
2093
1.64k
         }
2094
2095
375k
         if ((end != itr) || (!instate))
2096
0
            return false;
2097
375k
         else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag()))
2098
131
            return false;
2099
375k
         else if (exponent)
2100
368
            d = compute_pow10(d,exponent);
2101
2102
375k
         t = static_cast<T>((negative) ? -d : d);
2103
375k
         return true;
2104
375k
      }
bool exprtk::details::string_to_real<char const*, float>(char const*&, char const*, float&, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1950
242k
      {
1951
242k
         if (end == itr_external) return false;
1952
1953
242k
         Iterator itr = itr_external;
1954
1955
242k
         T d = T(0);
1956
1957
242k
         const bool negative = ('-' == (*itr));
1958
1959
242k
         if (negative || '+' == (*itr))
1960
0
         {
1961
0
            if (end == ++itr)
1962
0
               return false;
1963
0
         }
1964
1965
242k
         bool instate = false;
1966
1967
242k
         static const char_t zero = static_cast<uchar_t>('0');
1968
1969
242k
         #define parse_digit_1(d)          \
1970
242k
         if ((digit = (*itr - zero)) < 10) \
1971
242k
            { d = d * T(10) + digit; }     \
1972
242k
         else                              \
1973
242k
            { break; }                     \
1974
242k
         if (end == ++itr) break;          \
1975
242k
1976
242k
         #define parse_digit_2(d)          \
1977
242k
         if ((digit = (*itr - zero)) < 10) \
1978
242k
            { d = d * T(10) + digit; }     \
1979
242k
         else                              \
1980
242k
            { break; }                     \
1981
242k
            ++itr;                         \
1982
242k
1983
242k
         if ('.' != (*itr))
1984
242k
         {
1985
242k
            const Iterator curr = itr;
1986
1987
855k
            while ((end != itr) && (zero == (*itr))) ++itr;
1988
1989
703k
            while (end != itr)
1990
615k
            {
1991
615k
               unsigned int digit;
1992
615k
               parse_digit_1(d)
1993
1.01M
               parse_digit_1(d)
1994
922k
               parse_digit_2(d)
1995
922k
            }
1996
1997
242k
            if (curr != itr) instate = true;
1998
242k
         }
1999
2000
242k
         int exponent = 0;
2001
2002
242k
         if (end != itr)
2003
1.61k
         {
2004
1.61k
            if ('.' == (*itr))
2005
881
            {
2006
881
               const Iterator curr = ++itr;
2007
881
               T tmp_d = T(0);
2008
2009
133k
               while (end != itr)
2010
133k
               {
2011
133k
                  unsigned int digit;
2012
133k
                  parse_digit_1(tmp_d)
2013
265k
                  parse_digit_1(tmp_d)
2014
265k
                  parse_digit_2(tmp_d)
2015
265k
               }
2016
2017
881
               if (curr != itr)
2018
495
               {
2019
495
                  instate = true;
2020
2021
495
                  const int frac_exponent = static_cast<int>(-std::distance(curr, itr));
2022
2023
495
                  if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag()))
2024
53
                     return false;
2025
2026
442
                  d += compute_pow10(tmp_d, frac_exponent);
2027
442
               }
2028
2029
881
               #undef parse_digit_1
2030
881
               #undef parse_digit_2
2031
881
            }
2032
2033
1.55k
            if (end != itr)
2034
806
            {
2035
806
               typename std::iterator_traits<Iterator>::value_type c = (*itr);
2036
2037
806
               if (('e' == c) || ('E' == c))
2038
806
               {
2039
806
                  int exp = 0;
2040
2041
806
                  if (!details::string_to_type_converter_impl_ref(++itr, end, exp))
2042
297
                  {
2043
297
                     if (end == itr)
2044
144
                        return false;
2045
153
                     else
2046
153
                        c = (*itr);
2047
297
                  }
2048
2049
662
                  exponent += exp;
2050
662
               }
2051
2052
662
               if (end != itr)
2053
153
               {
2054
153
                  if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c))
2055
0
                     ++itr;
2056
153
                  else if ('#' == c)
2057
0
                  {
2058
0
                     if (end == ++itr)
2059
0
                        return false;
2060
0
                     else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2061
0
                     {
2062
0
                        if (('i' == (*itr)) || ('I' == (*itr)))
2063
0
                        {
2064
0
                           return parse_inf(itr, end, t, negative);
2065
0
                        }
2066
0
                        else if (('n' == (*itr)) || ('N' == (*itr)))
2067
0
                        {
2068
0
                           return parse_nan(itr, end, t);
2069
0
                        }
2070
0
                        else
2071
0
                           return false;
2072
0
                     }
2073
0
                     else
2074
0
                        return false;
2075
0
                  }
2076
153
                  else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2077
45
                  {
2078
45
                     if (('i' == (*itr)) || ('I' == (*itr)))
2079
0
                     {
2080
0
                        return parse_inf(itr, end, t, negative);
2081
0
                     }
2082
45
                     else if (('n' == (*itr)) || ('N' == (*itr)))
2083
0
                     {
2084
0
                        return parse_nan(itr, end, t);
2085
0
                     }
2086
45
                     else
2087
45
                        return false;
2088
45
                  }
2089
108
                  else
2090
108
                     return false;
2091
153
               }
2092
662
            }
2093
1.55k
         }
2094
2095
242k
         if ((end != itr) || (!instate))
2096
0
            return false;
2097
242k
         else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag()))
2098
223
            return false;
2099
242k
         else if (exponent)
2100
252
            d = compute_pow10(d,exponent);
2101
2102
242k
         t = static_cast<T>((negative) ? -d : d);
2103
242k
         return true;
2104
242k
      }
2105
2106
      template <typename T>
2107
      inline bool string_to_real(const std::string& s, T& t)
2108
618k
      {
2109
618k
         const typename numeric::details::number_type<T>::type num_type;
2110
2111
618k
         char_cptr begin = s.data();
2112
618k
         char_cptr end   = s.data() + s.size();
2113
2114
618k
         return string_to_real(begin, end, t, num_type);
2115
618k
      }
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
2108
375k
      {
2109
375k
         const typename numeric::details::number_type<T>::type num_type;
2110
2111
375k
         char_cptr begin = s.data();
2112
375k
         char_cptr end   = s.data() + s.size();
2113
2114
375k
         return string_to_real(begin, end, t, num_type);
2115
375k
      }
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
2108
242k
      {
2109
242k
         const typename numeric::details::number_type<T>::type num_type;
2110
2111
242k
         char_cptr begin = s.data();
2112
242k
         char_cptr end   = s.data() + s.size();
2113
2114
242k
         return string_to_real(begin, end, t, num_type);
2115
242k
      }
2116
2117
      template <typename T>
2118
      struct functor_t
2119
      {
2120
         /*
2121
            Note: The following definitions for Type, may require tweaking
2122
                  based on the compiler and target architecture. The benchmark
2123
                  should provide enough information to make the right choice.
2124
         */
2125
         //typedef T Type;
2126
         //typedef const T Type;
2127
         typedef const T& Type;
2128
         typedef       T& RefType;
2129
         typedef T (*qfunc_t)(Type t0, Type t1, Type t2, Type t3);
2130
         typedef T (*tfunc_t)(Type t0, Type t1, Type t2);
2131
         typedef T (*bfunc_t)(Type t0, Type t1);
2132
         typedef T (*ufunc_t)(Type t0);
2133
      };
2134
2135
   } // namespace details
2136
2137
   struct loop_runtime_check
2138
   {
2139
      enum loop_types
2140
      {
2141
         e_invalid           = 0,
2142
         e_for_loop          = 1,
2143
         e_while_loop        = 2,
2144
         e_repeat_until_loop = 4,
2145
         e_all_loops         = 7
2146
      };
2147
2148
      enum violation_type
2149
      {
2150
          e_unknown         = 0,
2151
          e_iteration_count = 1,
2152
          e_timeout         = 2
2153
      };
2154
2155
      loop_types loop_set;
2156
2157
      loop_runtime_check()
2158
12.8k
      : loop_set(e_invalid)
2159
12.8k
      , max_loop_iterations(0)
2160
12.8k
      {}
2161
2162
      details::_uint64_t max_loop_iterations;
2163
2164
      struct violation_context
2165
      {
2166
         loop_types loop;
2167
         violation_type violation;
2168
         details::_uint64_t iteration_count;
2169
      };
2170
2171
      virtual bool check()
2172
0
      {
2173
0
         return true;
2174
0
      }
2175
2176
      virtual void handle_runtime_violation(const violation_context&)
2177
0
      {
2178
0
         throw std::runtime_error("ExprTk Loop runtime violation.");
2179
0
      }
2180
2181
      virtual ~loop_runtime_check()
2182
12.8k
      {}
2183
   };
2184
2185
   typedef loop_runtime_check* loop_runtime_check_ptr;
2186
2187
   struct vector_access_runtime_check
2188
   {
2189
      struct violation_context
2190
      {
2191
         void* base_ptr;
2192
         void* end_ptr;
2193
         void* access_ptr;
2194
         std::size_t type_size;
2195
      };
2196
2197
      virtual ~vector_access_runtime_check()
2198
12.8k
      {}
2199
2200
      virtual bool handle_runtime_violation(violation_context& /*context*/)
2201
0
      {
2202
0
         throw std::runtime_error("ExprTk runtime vector access violation.");
2203
0
         #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
2204
0
         return false;
2205
0
         #endif
2206
0
      }
2207
   };
2208
2209
   typedef vector_access_runtime_check* vector_access_runtime_check_ptr;
2210
2211
   struct assert_check
2212
   {
2213
      struct assert_context
2214
      {
2215
         std::string condition;
2216
         std::string message;
2217
         std::string id;
2218
         std::size_t offet;
2219
      };
2220
2221
      virtual ~assert_check()
2222
12.8k
      {}
2223
2224
      virtual void handle_assert(const assert_context& /*context*/)
2225
0
      {
2226
0
      }
2227
   };
2228
2229
   typedef assert_check* assert_check_ptr;
2230
2231
   struct compilation_check
2232
   {
2233
      struct compilation_context
2234
      {
2235
         std::string error_message;
2236
      };
2237
2238
      virtual bool continue_compilation(compilation_context& /*context*/) = 0;
2239
2240
      virtual ~compilation_check()
2241
12.8k
      {}
2242
   };
2243
2244
   typedef compilation_check* compilation_check_ptr;
2245
2246
   namespace lexer
2247
   {
2248
      struct token
2249
      {
2250
         enum token_type
2251
         {
2252
            e_none        =   0, e_error       =   1, e_err_symbol  =   2,
2253
            e_err_number  =   3, e_err_string  =   4, e_err_sfunc   =   5,
2254
            e_eof         =   6, e_number      =   7, e_symbol      =   8,
2255
            e_string      =   9, e_assign      =  10, e_addass      =  11,
2256
            e_subass      =  12, e_mulass      =  13, e_divass      =  14,
2257
            e_modass      =  15, e_shr         =  16, e_shl         =  17,
2258
            e_lte         =  18, e_ne          =  19, e_gte         =  20,
2259
            e_swap        =  21, e_lt          = '<', e_gt          = '>',
2260
            e_eq          = '=', e_rbracket    = ')', e_lbracket    = '(',
2261
            e_rsqrbracket = ']', e_lsqrbracket = '[', e_rcrlbracket = '}',
2262
            e_lcrlbracket = '{', e_comma       = ',', e_add         = '+',
2263
            e_sub         = '-', e_div         = '/', e_mul         = '*',
2264
            e_mod         = '%', e_pow         = '^', e_colon       = ':',
2265
            e_ternary     = '?'
2266
         };
2267
2268
         token()
2269
24.7M
         : type(e_none)
2270
24.7M
         , value("")
2271
24.7M
         , position(std::numeric_limits<std::size_t>::max())
2272
24.7M
         {}
2273
2274
         void clear()
2275
10.6k
         {
2276
10.6k
            type     = e_none;
2277
10.6k
            value    = "";
2278
10.6k
            position = std::numeric_limits<std::size_t>::max();
2279
10.6k
         }
2280
2281
         template <typename Iterator>
2282
         inline token& set_operator(const token_type tt,
2283
                                    const Iterator begin, const Iterator end,
2284
                                    const Iterator base_begin = Iterator(0))
2285
2.29M
         {
2286
2.29M
            type = tt;
2287
2.29M
            value.assign(begin,end);
2288
2.29M
            if (base_begin)
2289
2.29M
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2290
2.29M
            return (*this);
2291
2.29M
         }
2292
2293
         template <typename Iterator>
2294
         inline token& set_symbol(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0))
2295
797k
         {
2296
797k
            type = e_symbol;
2297
797k
            value.assign(begin,end);
2298
797k
            if (base_begin)
2299
797k
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2300
797k
            return (*this);
2301
797k
         }
2302
2303
         template <typename Iterator>
2304
         inline token& set_numeric(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0))
2305
612k
         {
2306
612k
            type = e_number;
2307
612k
            value.assign(begin,end);
2308
612k
            if (base_begin)
2309
612k
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2310
612k
            return (*this);
2311
612k
         }
2312
2313
         template <typename Iterator>
2314
         inline token& set_string(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0))
2315
205k
         {
2316
205k
            type = e_string;
2317
205k
            value.assign(begin,end);
2318
205k
            if (base_begin)
2319
205k
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2320
205k
            return (*this);
2321
205k
         }
2322
2323
         inline token& set_string(const std::string& s, const std::size_t p)
2324
3.86k
         {
2325
3.86k
            type     = e_string;
2326
3.86k
            value    = s;
2327
3.86k
            position = p;
2328
3.86k
            return (*this);
2329
3.86k
         }
2330
2331
         template <typename Iterator>
2332
         inline token& set_error(const token_type et,
2333
                                 const Iterator begin, const Iterator end,
2334
                                 const Iterator base_begin = Iterator(0))
2335
1.86k
         {
2336
1.86k
            if (
2337
1.86k
                 (e_error      == et) ||
2338
1.86k
                 (e_err_symbol == et) ||
2339
1.86k
                 (e_err_number == et) ||
2340
1.86k
                 (e_err_string == et) ||
2341
1.86k
                 (e_err_sfunc  == et)
2342
1.86k
               )
2343
1.86k
            {
2344
1.86k
               type = et;
2345
1.86k
            }
2346
0
            else
2347
0
               type = e_error;
2348
2349
1.86k
            value.assign(begin,end);
2350
2351
1.86k
            if (base_begin)
2352
1.86k
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2353
2354
1.86k
            return (*this);
2355
1.86k
         }
2356
2357
         static inline std::string to_str(token_type t)
2358
85
         {
2359
85
            switch (t)
2360
85
            {
2361
0
               case e_none        : return "NONE";
2362
0
               case e_error       : return "ERROR";
2363
0
               case e_err_symbol  : return "ERROR_SYMBOL";
2364
0
               case e_err_number  : return "ERROR_NUMBER";
2365
0
               case e_err_string  : return "ERROR_STRING";
2366
0
               case e_eof         : return "EOF";
2367
0
               case e_number      : return "NUMBER";
2368
0
               case e_symbol      : return "SYMBOL";
2369
0
               case e_string      : return "STRING";
2370
0
               case e_assign      : return ":=";
2371
0
               case e_addass      : return "+=";
2372
0
               case e_subass      : return "-=";
2373
0
               case e_mulass      : return "*=";
2374
0
               case e_divass      : return "/=";
2375
0
               case e_modass      : return "%=";
2376
0
               case e_shr         : return ">>";
2377
0
               case e_shl         : return "<<";
2378
0
               case e_lte         : return "<=";
2379
0
               case e_ne          : return "!=";
2380
0
               case e_gte         : return ">=";
2381
0
               case e_lt          : return "<";
2382
0
               case e_gt          : return ">";
2383
0
               case e_eq          : return "=";
2384
0
               case e_rbracket    : return ")";
2385
0
               case e_lbracket    : return "(";
2386
0
               case e_rsqrbracket : return "]";
2387
0
               case e_lsqrbracket : return "[";
2388
0
               case e_rcrlbracket : return "}";
2389
85
               case e_lcrlbracket : return "{";
2390
0
               case e_comma       : return ",";
2391
0
               case e_add         : return "+";
2392
0
               case e_sub         : return "-";
2393
0
               case e_div         : return "/";
2394
0
               case e_mul         : return "*";
2395
0
               case e_mod         : return "%";
2396
0
               case e_pow         : return "^";
2397
0
               case e_colon       : return ":";
2398
0
               case e_ternary     : return "?";
2399
0
               case e_swap        : return "<=>";
2400
0
               default            : return "UNKNOWN";
2401
85
            }
2402
85
         }
2403
2404
         static inline std::string seperator_to_str(const token_type t)
2405
0
         {
2406
0
            switch (t)
2407
0
            {
2408
0
               case e_comma : return ",";
2409
0
               case e_colon : return ":";
2410
0
               case e_eof   : return ";";
2411
0
               default      : return "UNKNOWN";
2412
0
            }
2413
2414
0
            #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
2415
0
            return "UNKNOWN";
2416
0
            #endif
2417
0
         }
2418
2419
         inline bool is_error() const
2420
4.63M
         {
2421
4.63M
            return (
2422
4.63M
                     (e_error      == type) ||
2423
4.63M
                     (e_err_symbol == type) ||
2424
4.63M
                     (e_err_number == type) ||
2425
4.63M
                     (e_err_string == type) ||
2426
4.63M
                     (e_err_sfunc  == type)
2427
4.63M
                   );
2428
4.63M
         }
2429
2430
         token_type type;
2431
         std::string value;
2432
         std::size_t position;
2433
      };
2434
2435
      class generator
2436
      {
2437
      public:
2438
2439
         typedef token token_t;
2440
         typedef std::vector<token_t> token_list_t;
2441
         typedef token_list_t::iterator token_list_itr_t;
2442
         typedef details::char_t char_t;
2443
2444
         generator()
2445
12.8k
         : base_itr_(0)
2446
12.8k
         , s_itr_   (0)
2447
12.8k
         , s_end_   (0)
2448
12.8k
         {
2449
12.8k
            clear();
2450
12.8k
         }
2451
2452
         inline void clear()
2453
12.8k
         {
2454
12.8k
            base_itr_ = 0;
2455
12.8k
            s_itr_    = 0;
2456
12.8k
            s_end_    = 0;
2457
12.8k
            token_list_.clear();
2458
12.8k
            token_itr_ = token_list_.end();
2459
12.8k
            store_token_itr_ = token_list_.end();
2460
12.8k
         }
2461
2462
         inline bool process(const std::string& str)
2463
12.8k
         {
2464
12.8k
            base_itr_ = str.data();
2465
12.8k
            s_itr_    = str.data();
2466
12.8k
            s_end_    = str.data() + str.size();
2467
2468
12.8k
            eof_token_.set_operator(token_t::e_eof, s_end_, s_end_, base_itr_);
2469
12.8k
            token_list_.clear();
2470
2471
4.38M
            while (!is_end(s_itr_))
2472
4.37M
            {
2473
4.37M
               scan_token();
2474
2475
4.37M
               if (!token_list_.empty() && token_list_.back().is_error())
2476
1.86k
                  return false;
2477
4.37M
            }
2478
2479
10.9k
            return true;
2480
12.8k
         }
2481
2482
         inline bool empty() const
2483
10.9k
         {
2484
10.9k
            return token_list_.empty();
2485
10.9k
         }
2486
2487
         inline std::size_t size() const
2488
256k
         {
2489
256k
            return token_list_.size();
2490
256k
         }
2491
2492
         inline void begin()
2493
20.8k
         {
2494
20.8k
            token_itr_ = token_list_.begin();
2495
20.8k
            store_token_itr_ = token_list_.begin();
2496
20.8k
         }
2497
2498
         inline void store()
2499
0
         {
2500
0
            store_token_itr_ = token_itr_;
2501
0
         }
2502
2503
         inline void restore()
2504
0
         {
2505
0
            token_itr_ = store_token_itr_;
2506
0
         }
2507
2508
         inline token_t& next_token()
2509
641k
         {
2510
641k
            if (token_list_.end() != token_itr_)
2511
632k
            {
2512
632k
               return *token_itr_++;
2513
632k
            }
2514
8.44k
            else
2515
8.44k
               return eof_token_;
2516
641k
         }
2517
2518
         inline token_t& peek_next_token()
2519
476k
         {
2520
476k
            if (token_list_.end() != token_itr_)
2521
468k
            {
2522
468k
               return *token_itr_;
2523
468k
            }
2524
7.56k
            else
2525
7.56k
               return eof_token_;
2526
476k
         }
2527
2528
         inline token_t& operator[](const std::size_t& index)
2529
23.2M
         {
2530
23.2M
            if (index < token_list_.size())
2531
23.2M
            {
2532
23.2M
               return token_list_[index];
2533
23.2M
            }
2534
0
            else
2535
0
               return eof_token_;
2536
23.2M
         }
2537
2538
         inline token_t operator[](const std::size_t& index) const
2539
0
         {
2540
0
            if (index < token_list_.size())
2541
0
            {
2542
0
               return token_list_[index];
2543
0
            }
2544
0
            else
2545
0
               return eof_token_;
2546
0
         }
2547
2548
         inline bool finished() const
2549
7.17k
         {
2550
7.17k
            return (token_list_.end() == token_itr_);
2551
7.17k
         }
2552
2553
         inline void insert_front(token_t::token_type tk_type)
2554
1.96k
         {
2555
1.96k
            if (
2556
1.96k
                 !token_list_.empty() &&
2557
1.96k
                 (token_list_.end() != token_itr_)
2558
1.96k
               )
2559
1.96k
            {
2560
1.96k
               token_t t = *token_itr_;
2561
2562
1.96k
               t.type     = tk_type;
2563
1.96k
               token_itr_ = token_list_.insert(token_itr_,t);
2564
1.96k
            }
2565
1.96k
         }
2566
2567
         inline std::string substr(const std::size_t& begin, const std::size_t& end) const
2568
7.65k
         {
2569
7.65k
            const details::char_cptr begin_itr = ((base_itr_ + begin) < s_end_) ? (base_itr_ + begin) : s_end_;
2570
7.65k
            const details::char_cptr end_itr   = ((base_itr_ + end  ) < s_end_) ? (base_itr_ + end  ) : s_end_;
2571
2572
7.65k
            return std::string(begin_itr,end_itr);
2573
7.65k
         }
2574
2575
         inline std::string remaining() const
2576
0
         {
2577
0
            if (finished())
2578
0
               return "";
2579
0
            else if (token_list_.begin() != token_itr_)
2580
0
               return std::string(base_itr_ + (token_itr_ - 1)->position, s_end_);
2581
0
            else
2582
0
               return std::string(base_itr_ + token_itr_->position, s_end_);
2583
0
         }
2584
2585
      private:
2586
2587
         inline bool is_end(details::char_cptr itr) const
2588
78.3M
         {
2589
78.3M
            return (s_end_ == itr);
2590
78.3M
         }
2591
2592
         #ifndef exprtk_disable_comments
2593
         inline bool is_comment_start(details::char_cptr itr) const
2594
3.97M
         {
2595
3.97M
            const char_t c0 = *(itr + 0);
2596
3.97M
            const char_t c1 = *(itr + 1);
2597
2598
3.97M
            if ('#' == c0)
2599
67.1k
               return true;
2600
3.90M
            else if (!is_end(itr + 1))
2601
3.90M
            {
2602
3.90M
               if (('/' == c0) && ('/' == c1)) return true;
2603
3.89M
               if (('/' == c0) && ('*' == c1)) return true;
2604
3.89M
            }
2605
3.90M
            return false;
2606
3.97M
         }
2607
         #else
2608
         inline bool is_comment_start(details::char_cptr) const
2609
         {
2610
            return false;
2611
         }
2612
         #endif
2613
2614
         inline void skip_whitespace()
2615
401k
         {
2616
925k
            while (!is_end(s_itr_) && details::is_whitespace(*s_itr_))
2617
523k
            {
2618
523k
               ++s_itr_;
2619
523k
            }
2620
401k
         }
2621
2622
         inline void skip_comments()
2623
69.2k
         {
2624
69.2k
            #ifndef exprtk_disable_comments
2625
            // The following comment styles are supported:
2626
            // 1. // .... \n
2627
            // 2. #  .... \n
2628
            // 3. /* .... */
2629
69.2k
            struct test
2630
69.2k
            {
2631
69.2k
               static inline bool comment_start(const char_t c0, const char_t c1, int& mode, int& incr)
2632
69.2k
               {
2633
69.2k
                  mode = 0;
2634
69.2k
                  if      ('#' == c0)    { mode = 1; incr = 1; }
2635
2.06k
                  else if ('/' == c0)
2636
2.06k
                  {
2637
2.06k
                     if      ('/' == c1) { mode = 1; incr = 2; }
2638
264
                     else if ('*' == c1) { mode = 2; incr = 2; }
2639
2.06k
                  }
2640
69.2k
                  return (0 != mode);
2641
69.2k
               }
2642
2643
69.2k
               static inline bool comment_end(const char_t c0, const char_t c1, int& mode)
2644
2.79M
               {
2645
2.79M
                  if (
2646
2.79M
                       ((1 == mode) && ('\n' == c0)) ||
2647
2.79M
                       ((2 == mode) && ( '*' == c0) && ('/' == c1))
2648
2.79M
                     )
2649
69.0k
                  {
2650
69.0k
                     mode = 0;
2651
69.0k
                     return true;
2652
69.0k
                  }
2653
2.72M
                  else
2654
2.72M
                     return false;
2655
2.79M
               }
2656
69.2k
            };
2657
2658
69.2k
            int mode      = 0;
2659
69.2k
            int increment = 0;
2660
2661
69.2k
            if (is_end(s_itr_))
2662
0
               return;
2663
69.2k
            else if (!test::comment_start(*s_itr_, *(s_itr_ + 1), mode, increment))
2664
0
               return;
2665
2666
69.2k
            details::char_cptr cmt_start = s_itr_;
2667
2668
69.2k
            s_itr_ += increment;
2669
2670
2.79M
            while (!is_end(s_itr_))
2671
2.79M
            {
2672
2.79M
               if ((1 == mode) && test::comment_end(*s_itr_, 0, mode))
2673
68.8k
               {
2674
68.8k
                  ++s_itr_;
2675
68.8k
                  return;
2676
68.8k
               }
2677
2678
2.72M
               if ((2 == mode))
2679
203k
               {
2680
203k
                  if (!is_end((s_itr_ + 1)) && test::comment_end(*s_itr_, *(s_itr_ + 1), mode))
2681
226
                  {
2682
226
                     s_itr_ += 2;
2683
226
                     return;
2684
226
                  }
2685
203k
               }
2686
2687
2.72M
               ++s_itr_;
2688
2.72M
            }
2689
2690
212
            if (2 == mode)
2691
38
            {
2692
38
               token_t t;
2693
38
               t.set_error(token::e_error, cmt_start, cmt_start + mode, base_itr_);
2694
38
               token_list_.push_back(t);
2695
38
            }
2696
212
            #endif
2697
212
         }
2698
2699
         inline bool next_is_digit(const details::char_cptr itr) const
2700
2.16k
         {
2701
2.16k
            return ((itr + 1) != s_end_) &&
2702
2.16k
                   details::is_digit(*(itr + 1));
2703
2.16k
         }
2704
2705
         inline void scan_token()
2706
4.37M
         {
2707
4.37M
            const char_t c = *s_itr_;
2708
2709
4.37M
            if (details::is_whitespace(c))
2710
401k
            {
2711
401k
               skip_whitespace();
2712
401k
               return;
2713
401k
            }
2714
3.97M
            else if (is_comment_start(s_itr_))
2715
69.2k
            {
2716
69.2k
               skip_comments();
2717
69.2k
               return;
2718
69.2k
            }
2719
3.90M
            else if (details::is_operator_char(c))
2720
2.30M
            {
2721
2.30M
               scan_operator();
2722
2.30M
               return;
2723
2.30M
            }
2724
1.60M
            else if (details::is_letter(c))
2725
746k
            {
2726
746k
               scan_symbol();
2727
746k
               return;
2728
746k
            }
2729
859k
            else if (('.' == c) && !next_is_digit(s_itr_))
2730
1.65k
            {
2731
1.65k
               scan_operator();
2732
1.65k
               return;
2733
1.65k
            }
2734
857k
            else if (details::is_digit(c) || ('.' == c))
2735
612k
            {
2736
612k
               scan_number();
2737
612k
               return;
2738
612k
            }
2739
244k
            else if ('$' == c)
2740
866
            {
2741
866
               scan_special_function();
2742
866
               return;
2743
866
            }
2744
243k
            #ifndef exprtk_disable_string_capabilities
2745
243k
            else if ('\'' == c)
2746
209k
            {
2747
209k
               scan_string();
2748
209k
               return;
2749
209k
            }
2750
34.1k
            #endif
2751
34.1k
            else if ('~' == c)
2752
33.7k
            {
2753
33.7k
               token_t t;
2754
33.7k
               t.set_symbol(s_itr_, s_itr_ + 1, base_itr_);
2755
33.7k
               token_list_.push_back(t);
2756
33.7k
               ++s_itr_;
2757
33.7k
               return;
2758
33.7k
            }
2759
462
            else
2760
462
            {
2761
462
               token_t t;
2762
462
               t.set_error(token::e_error, s_itr_, s_itr_ + 2, base_itr_);
2763
462
               token_list_.push_back(t);
2764
462
               ++s_itr_;
2765
462
            }
2766
4.37M
         }
2767
2768
         inline void scan_operator()
2769
2.30M
         {
2770
2.30M
            token_t t;
2771
2772
2.30M
            const char_t c0 = s_itr_[0];
2773
2774
2.30M
            if (!is_end(s_itr_ + 1))
2775
2.30M
            {
2776
2.30M
               const char_t c1 = s_itr_[1];
2777
2778
2.30M
               if (!is_end(s_itr_ + 2))
2779
2.29M
               {
2780
2.29M
                  const char_t c2 = s_itr_[2];
2781
2782
2.29M
                  if ((c0 == '<') && (c1 == '=') && (c2 == '>'))
2783
766
                  {
2784
766
                     t.set_operator(token_t::e_swap, s_itr_, s_itr_ + 3, base_itr_);
2785
766
                     token_list_.push_back(t);
2786
766
                     s_itr_ += 3;
2787
766
                     return;
2788
766
                  }
2789
2.29M
               }
2790
2791
2.29M
               token_t::token_type ttype = token_t::e_none;
2792
2793
2.29M
               if      ((c0 == '<') && (c1 == '=')) ttype = token_t::e_lte;
2794
2.29M
               else if ((c0 == '>') && (c1 == '=')) ttype = token_t::e_gte;
2795
2.29M
               else if ((c0 == '<') && (c1 == '>')) ttype = token_t::e_ne;
2796
2.28M
               else if ((c0 == '!') && (c1 == '=')) ttype = token_t::e_ne;
2797
2.28M
               else if ((c0 == '=') && (c1 == '=')) ttype = token_t::e_eq;
2798
2.28M
               else if ((c0 == ':') && (c1 == '=')) ttype = token_t::e_assign;
2799
2.28M
               else if ((c0 == '<') && (c1 == '<')) ttype = token_t::e_shl;
2800
2.28M
               else if ((c0 == '>') && (c1 == '>')) ttype = token_t::e_shr;
2801
2.21M
               else if ((c0 == '+') && (c1 == '=')) ttype = token_t::e_addass;
2802
2.15M
               else if ((c0 == '-') && (c1 == '=')) ttype = token_t::e_subass;
2803
2.15M
               else if ((c0 == '*') && (c1 == '=')) ttype = token_t::e_mulass;
2804
2.15M
               else if ((c0 == '/') && (c1 == '=')) ttype = token_t::e_divass;
2805
2.15M
               else if ((c0 == '%') && (c1 == '=')) ttype = token_t::e_modass;
2806
2807
2.29M
               if (token_t::e_none != ttype)
2808
149k
               {
2809
149k
                  t.set_operator(ttype, s_itr_, s_itr_ + 2, base_itr_);
2810
149k
                  token_list_.push_back(t);
2811
149k
                  s_itr_ += 2;
2812
149k
                  return;
2813
149k
               }
2814
2.29M
            }
2815
2816
2.15M
            if ('<' == c0)
2817
72.6k
               t.set_operator(token_t::e_lt , s_itr_, s_itr_ + 1, base_itr_);
2818
2.07M
            else if ('>' == c0)
2819
61.3k
               t.set_operator(token_t::e_gt , s_itr_, s_itr_ + 1, base_itr_);
2820
2.01M
            else if (';' == c0)
2821
1.82k
               t.set_operator(token_t::e_eof, s_itr_, s_itr_ + 1, base_itr_);
2822
2.01M
            else if ('&' == c0)
2823
14.3k
               t.set_symbol(s_itr_, s_itr_ + 1, base_itr_);
2824
2.00M
            else if ('|' == c0)
2825
2.43k
               t.set_symbol(s_itr_, s_itr_ + 1, base_itr_);
2826
1.99M
            else
2827
1.99M
               t.set_operator(token_t::token_type(c0), s_itr_, s_itr_ + 1, base_itr_);
2828
2829
2.15M
            token_list_.push_back(t);
2830
2.15M
            ++s_itr_;
2831
2.15M
         }
2832
2833
         inline void scan_symbol()
2834
746k
         {
2835
746k
            details::char_cptr initial_itr = s_itr_;
2836
2837
16.8M
            while (!is_end(s_itr_))
2838
16.8M
            {
2839
16.8M
               if (!details::is_letter_or_digit(*s_itr_) && ('_' != (*s_itr_)))
2840
745k
               {
2841
745k
                  if ('.' != (*s_itr_))
2842
742k
                     break;
2843
                  /*
2844
                     Permit symbols that contain a 'dot'
2845
                     Allowed   : abc.xyz, a123.xyz, abc.123, abc_.xyz a123_.xyz abc._123
2846
                     Disallowed: .abc, abc.<white-space>, abc.<eof>, abc.<operator +,-,*,/...>
2847
                  */
2848
2.88k
                  if (
2849
2.88k
                       (s_itr_ != initial_itr)                     &&
2850
2.88k
                       !is_end(s_itr_ + 1)                         &&
2851
2.88k
                       !details::is_letter_or_digit(*(s_itr_ + 1)) &&
2852
2.88k
                       ('_' != (*(s_itr_ + 1)))
2853
2.88k
                     )
2854
1.01k
                     break;
2855
2.88k
               }
2856
2857
16.1M
               ++s_itr_;
2858
16.1M
            }
2859
2860
746k
            token_t t;
2861
746k
            t.set_symbol(initial_itr, s_itr_, base_itr_);
2862
746k
            token_list_.push_back(t);
2863
746k
         }
2864
2865
         inline void scan_number()
2866
612k
         {
2867
            /*
2868
               Attempt to match a valid numeric value in one of the following formats:
2869
               (01) 123456
2870
               (02) 123456.
2871
               (03) 123.456
2872
               (04) 123.456e3
2873
               (05) 123.456E3
2874
               (06) 123.456e+3
2875
               (07) 123.456E+3
2876
               (08) 123.456e-3
2877
               (09) 123.456E-3
2878
               (00) .1234
2879
               (11) .1234e3
2880
               (12) .1234E+3
2881
               (13) .1234e+3
2882
               (14) .1234E-3
2883
               (15) .1234e-3
2884
            */
2885
2886
612k
            details::char_cptr initial_itr = s_itr_;
2887
612k
            bool dot_found                 = false;
2888
612k
            bool e_found                   = false;
2889
612k
            bool post_e_sign_found         = false;
2890
612k
            bool post_e_digit_found        = false;
2891
612k
            token_t t;
2892
2893
14.5M
            while (!is_end(s_itr_))
2894
14.5M
            {
2895
14.5M
               if ('.' == (*s_itr_))
2896
1.51k
               {
2897
1.51k
                  if (dot_found)
2898
84
                  {
2899
84
                     t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_);
2900
84
                     token_list_.push_back(t);
2901
2902
84
                     return;
2903
84
                  }
2904
2905
1.43k
                  dot_found = true;
2906
1.43k
                  ++s_itr_;
2907
2908
1.43k
                  continue;
2909
1.51k
               }
2910
14.5M
               else if ('e' == std::tolower(*s_itr_))
2911
2.87k
               {
2912
2.87k
                  const char_t& c = *(s_itr_ + 1);
2913
2914
2.87k
                  if (is_end(s_itr_ + 1))
2915
174
                  {
2916
174
                     t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_);
2917
174
                     token_list_.push_back(t);
2918
2919
174
                     return;
2920
174
                  }
2921
2.69k
                  else if (
2922
2.69k
                            ('+' != c) &&
2923
2.69k
                            ('-' != c) &&
2924
2.69k
                            !details::is_digit(c)
2925
2.69k
                          )
2926
166
                  {
2927
166
                     t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_);
2928
166
                     token_list_.push_back(t);
2929
2930
166
                     return;
2931
166
                  }
2932
2933
2.53k
                  e_found = true;
2934
2.53k
                  ++s_itr_;
2935
2936
2.53k
                  continue;
2937
2.87k
               }
2938
14.5M
               else if (e_found && details::is_sign(*s_itr_) && !post_e_digit_found)
2939
1.30k
               {
2940
1.30k
                  if (post_e_sign_found)
2941
140
                  {
2942
140
                     t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_);
2943
140
                     token_list_.push_back(t);
2944
2945
140
                     return;
2946
140
                  }
2947
2948
1.16k
                  post_e_sign_found = true;
2949
1.16k
                  ++s_itr_;
2950
2951
1.16k
                  continue;
2952
1.30k
               }
2953
14.5M
               else if (e_found && details::is_digit(*s_itr_))
2954
671k
               {
2955
671k
                  post_e_digit_found = true;
2956
671k
                  ++s_itr_;
2957
2958
671k
                  continue;
2959
671k
               }
2960
13.8M
               else if (('.' != (*s_itr_)) && !details::is_digit(*s_itr_))
2961
608k
                  break;
2962
13.2M
               else
2963
13.2M
                  ++s_itr_;
2964
14.5M
            }
2965
2966
612k
            t.set_numeric(initial_itr, s_itr_, base_itr_);
2967
612k
            token_list_.push_back(t);
2968
2969
612k
            return;
2970
612k
         }
2971
2972
         inline void scan_special_function()
2973
866
         {
2974
866
            details::char_cptr initial_itr = s_itr_;
2975
866
            token_t t;
2976
2977
            // $fdd(x,x,x) = at least 11 chars
2978
866
            if (std::distance(s_itr_,s_end_) < 11)
2979
22
            {
2980
22
               t.set_error(
2981
22
                  token::e_err_sfunc,
2982
22
                  initial_itr, std::min(initial_itr + 11, s_end_),
2983
22
                  base_itr_);
2984
22
               token_list_.push_back(t);
2985
2986
22
               return;
2987
22
            }
2988
2989
844
            if (
2990
844
                 !(('$' == *s_itr_)                       &&
2991
844
                   (details::imatch  ('f',*(s_itr_ + 1))) &&
2992
844
                   (details::is_digit(*(s_itr_ + 2)))     &&
2993
844
                   (details::is_digit(*(s_itr_ + 3))))
2994
844
               )
2995
28
            {
2996
28
               t.set_error(
2997
28
                  token::e_err_sfunc,
2998
28
                  initial_itr, std::min(initial_itr + 4, s_end_),
2999
28
                  base_itr_);
3000
28
               token_list_.push_back(t);
3001
3002
28
               return;
3003
28
            }
3004
3005
816
            s_itr_ += 4; // $fdd = 4chars
3006
3007
816
            t.set_symbol(initial_itr, s_itr_, base_itr_);
3008
816
            token_list_.push_back(t);
3009
3010
816
            return;
3011
844
         }
3012
3013
         #ifndef exprtk_disable_string_capabilities
3014
         inline void scan_string()
3015
209k
         {
3016
209k
            details::char_cptr initial_itr = s_itr_ + 1;
3017
209k
            token_t t;
3018
3019
209k
            if (std::distance(s_itr_,s_end_) < 2)
3020
26
            {
3021
26
               t.set_error(token::e_err_string, s_itr_, s_end_, base_itr_);
3022
26
               token_list_.push_back(t);
3023
3024
26
               return;
3025
26
            }
3026
3027
209k
            ++s_itr_;
3028
3029
209k
            bool escaped_found = false;
3030
209k
            bool escaped = false;
3031
3032
29.7M
            while (!is_end(s_itr_))
3033
29.7M
            {
3034
29.7M
               if (!details::is_valid_string_char(*s_itr_))
3035
160
               {
3036
160
                  t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
3037
160
                  token_list_.push_back(t);
3038
3039
160
                  return;
3040
160
               }
3041
29.7M
               else if (!escaped && ('\\' == *s_itr_))
3042
22.2k
               {
3043
22.2k
                  escaped_found = true;
3044
22.2k
                  escaped = true;
3045
22.2k
                  ++s_itr_;
3046
3047
22.2k
                  continue;
3048
22.2k
               }
3049
29.7M
               else if (!escaped)
3050
29.7M
               {
3051
29.7M
                  if ('\'' == *s_itr_)
3052
209k
                     break;
3053
29.7M
               }
3054
22.2k
               else if (escaped)
3055
22.2k
               {
3056
22.2k
                  if (
3057
22.2k
                       !is_end(s_itr_) && ('0' == *(s_itr_)) &&
3058
22.2k
                       ((s_itr_ + 4) <= s_end_)
3059
22.2k
                     )
3060
5.61k
                  {
3061
5.61k
                     const bool x_separator = ('X' == std::toupper(*(s_itr_ + 1)));
3062
3063
5.61k
                     const bool both_digits = details::is_hex_digit(*(s_itr_ + 2)) &&
3064
5.61k
                                              details::is_hex_digit(*(s_itr_ + 3)) ;
3065
3066
5.61k
                     if (!(x_separator && both_digits))
3067
182
                     {
3068
182
                        t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
3069
182
                        token_list_.push_back(t);
3070
3071
182
                        return;
3072
182
                     }
3073
5.43k
                     else
3074
5.43k
                        s_itr_ += 3;
3075
5.61k
                  }
3076
3077
22.0k
                  escaped = false;
3078
22.0k
               }
3079
3080
29.5M
               ++s_itr_;
3081
29.5M
            }
3082
3083
209k
            if (is_end(s_itr_))
3084
386
            {
3085
386
               t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
3086
386
               token_list_.push_back(t);
3087
3088
386
               return;
3089
386
            }
3090
3091
209k
            if (!escaped_found)
3092
205k
               t.set_string(initial_itr, s_itr_, base_itr_);
3093
3.86k
            else
3094
3.86k
            {
3095
3.86k
               std::string parsed_string(initial_itr,s_itr_);
3096
3097
3.86k
               if (!details::cleanup_escapes(parsed_string))
3098
0
               {
3099
0
                  t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
3100
0
                  token_list_.push_back(t);
3101
3102
0
                  return;
3103
0
               }
3104
3105
3.86k
               t.set_string(
3106
3.86k
                  parsed_string,
3107
3.86k
                  static_cast<std::size_t>(std::distance(base_itr_,initial_itr)));
3108
3.86k
            }
3109
3110
209k
            token_list_.push_back(t);
3111
209k
            ++s_itr_;
3112
3113
209k
            return;
3114
209k
         }
3115
         #endif
3116
3117
      private:
3118
3119
         token_list_t       token_list_;
3120
         token_list_itr_t   token_itr_;
3121
         token_list_itr_t   store_token_itr_;
3122
         token_t            eof_token_;
3123
         details::char_cptr base_itr_;
3124
         details::char_cptr s_itr_;
3125
         details::char_cptr s_end_;
3126
3127
         friend class token_scanner;
3128
         friend class token_modifier;
3129
         friend class token_inserter;
3130
         friend class token_joiner;
3131
      }; // class generator
3132
3133
      class helper_interface
3134
      {
3135
      public:
3136
3137
0
         virtual void init()                     {              }
3138
63.4k
         virtual void reset()                    {              }
3139
43.2k
         virtual bool result()                   { return true; }
3140
0
         virtual std::size_t process(generator&) { return 0;    }
3141
102k
         virtual ~helper_interface()             {              }
3142
      };
3143
3144
      class token_scanner : public helper_interface
3145
      {
3146
      public:
3147
3148
         virtual ~token_scanner()
3149
0
         {}
3150
3151
         explicit token_scanner(const std::size_t& stride)
3152
51.3k
         : stride_(stride)
3153
51.3k
         {
3154
51.3k
            if (stride > 4)
3155
0
            {
3156
0
               throw std::invalid_argument("token_scanner() - Invalid stride value");
3157
0
            }
3158
51.3k
         }
3159
3160
         inline std::size_t process(generator& g) exprtk_override
3161
41.6k
         {
3162
41.6k
            if (g.token_list_.size() >= stride_)
3163
39.7k
            {
3164
10.7M
               for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i)
3165
10.6M
               {
3166
10.6M
                  token t;
3167
3168
10.6M
                  switch (stride_)
3169
10.6M
                  {
3170
6.57M
                     case 1 :
3171
6.57M
                              {
3172
6.57M
                                 const token& t0 = g.token_list_[i];
3173
3174
6.57M
                                 if (!operator()(t0))
3175
170
                                 {
3176
170
                                    return 0;
3177
170
                                 }
3178
6.57M
                              }
3179
6.57M
                              break;
3180
3181
6.57M
                     case 2 :
3182
2.35M
                              {
3183
2.35M
                                 const token& t0 = g.token_list_[i    ];
3184
2.35M
                                 const token& t1 = g.token_list_[i + 1];
3185
3186
2.35M
                                 if (!operator()(t0, t1))
3187
0
                                 {
3188
0
                                    return 0;
3189
0
                                 }
3190
2.35M
                              }
3191
2.35M
                              break;
3192
3193
2.35M
                     case 3 :
3194
1.76M
                              {
3195
1.76M
                                 const token& t0 = g.token_list_[i    ];
3196
1.76M
                                 const token& t1 = g.token_list_[i + 1];
3197
1.76M
                                 const token& t2 = g.token_list_[i + 2];
3198
3199
1.76M
                                 if (!operator()(t0, t1, t2))
3200
0
                                 {
3201
0
                                    return 0;
3202
0
                                 }
3203
1.76M
                              }
3204
1.76M
                              break;
3205
3206
1.76M
                     case 4 :
3207
0
                              {
3208
0
                                 const token& t0 = g.token_list_[i    ];
3209
0
                                 const token& t1 = g.token_list_[i + 1];
3210
0
                                 const token& t2 = g.token_list_[i + 2];
3211
0
                                 const token& t3 = g.token_list_[i + 3];
3212
3213
0
                                 if (!operator()(t0, t1, t2, t3))
3214
0
                                 {
3215
0
                                    return 0;
3216
0
                                 }
3217
0
                              }
3218
0
                              break;
3219
10.6M
                  }
3220
10.6M
               }
3221
39.7k
            }
3222
3223
41.4k
            return 0;
3224
41.6k
         }
3225
3226
         virtual bool operator() (const token&)
3227
0
         {
3228
0
            return false;
3229
0
         }
3230
3231
         virtual bool operator() (const token&, const token&)
3232
0
         {
3233
0
            return false;
3234
0
         }
3235
3236
         virtual bool operator() (const token&, const token&, const token&)
3237
0
         {
3238
0
            return false;
3239
0
         }
3240
3241
         virtual bool operator() (const token&, const token&, const token&, const token&)
3242
0
         {
3243
0
            return false;
3244
0
         }
3245
3246
      private:
3247
3248
         const std::size_t stride_;
3249
      }; // class token_scanner
3250
3251
      class token_modifier : public helper_interface
3252
      {
3253
      public:
3254
3255
         inline std::size_t process(generator& g) exprtk_override
3256
10.8k
         {
3257
10.8k
            std::size_t changes = 0;
3258
3259
3.32M
            for (std::size_t i = 0; i < g.token_list_.size(); ++i)
3260
3.31M
            {
3261
3.31M
               if (modify(g.token_list_[i])) changes++;
3262
3.31M
            }
3263
3264
10.8k
            return changes;
3265
10.8k
         }
3266
3267
         virtual bool modify(token& t) = 0;
3268
      };
3269
3270
      class token_inserter : public helper_interface
3271
      {
3272
      public:
3273
3274
         explicit token_inserter(const std::size_t& stride)
3275
12.8k
         : stride_(stride)
3276
12.8k
         {
3277
12.8k
            if (stride > 5)
3278
0
            {
3279
0
               throw std::invalid_argument("token_inserter() - Invalid stride value");
3280
0
            }
3281
12.8k
         }
3282
3283
         inline std::size_t process(generator& g) exprtk_override
3284
10.8k
         {
3285
10.8k
            if (g.token_list_.empty())
3286
0
               return 0;
3287
10.8k
            else if (g.token_list_.size() < stride_)
3288
876
               return 0;
3289
3290
9.94k
            std::size_t changes = 0;
3291
3292
9.94k
            typedef std::pair<std::size_t, token> insert_t;
3293
9.94k
            std::vector<insert_t> insert_list;
3294
9.94k
            insert_list.reserve(10000);
3295
3296
3.12M
            for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i)
3297
3.11M
            {
3298
3.11M
               int insert_index = -1;
3299
3.11M
               token t;
3300
3301
3.11M
               switch (stride_)
3302
3.11M
               {
3303
0
                  case 1 : insert_index = insert(g.token_list_[i],t);
3304
0
                           break;
3305
3306
3.11M
                  case 2 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], t);
3307
3.11M
                           break;
3308
3309
0
                  case 3 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], t);
3310
0
                           break;
3311
3312
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);
3313
0
                           break;
3314
3315
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);
3316
0
                           break;
3317
3.11M
               }
3318
3319
3.11M
               if ((insert_index >= 0) && (insert_index <= (static_cast<int>(stride_) + 1)))
3320
229k
               {
3321
229k
                  insert_list.push_back(insert_t(i, t));
3322
229k
                  changes++;
3323
229k
               }
3324
3.11M
            }
3325
3326
9.94k
            if (!insert_list.empty())
3327
3.18k
            {
3328
3.18k
               generator::token_list_t token_list;
3329
3330
3.18k
               std::size_t insert_index = 0;
3331
3332
2.97M
               for (std::size_t i = 0; i < g.token_list_.size(); ++i)
3333
2.96M
               {
3334
2.96M
                  token_list.push_back(g.token_list_[i]);
3335
3336
2.96M
                  if (
3337
2.96M
                       (insert_index < insert_list.size()) &&
3338
2.96M
                       (insert_list[insert_index].first == i)
3339
2.96M
                     )
3340
229k
                  {
3341
229k
                     token_list.push_back(insert_list[insert_index].second);
3342
229k
                     insert_index++;
3343
229k
                  }
3344
2.96M
               }
3345
3346
3.18k
               std::swap(g.token_list_,token_list);
3347
3.18k
            }
3348
3349
9.94k
            return changes;
3350
9.94k
         }
3351
3352
         #define token_inserter_empty_body \
3353
0
         {                                 \
3354
0
            return -1;                     \
3355
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&)
3356
3357
         inline virtual int insert(const token&, token&)
3358
         token_inserter_empty_body
3359
3360
         inline virtual int insert(const token&, const token&, token&)
3361
         token_inserter_empty_body
3362
3363
         inline virtual int insert(const token&, const token&, const token&, token&)
3364
         token_inserter_empty_body
3365
3366
         inline virtual int insert(const token&, const token&, const token&, const token&, token&)
3367
         token_inserter_empty_body
3368
3369
         inline virtual int insert(const token&, const token&, const token&, const token&, const token&, token&)
3370
         token_inserter_empty_body
3371
3372
         #undef token_inserter_empty_body
3373
3374
      private:
3375
3376
         const std::size_t stride_;
3377
      };
3378
3379
      class token_joiner : public helper_interface
3380
      {
3381
      public:
3382
3383
         explicit token_joiner(const std::size_t& stride)
3384
25.6k
         : stride_(stride)
3385
25.6k
         {}
3386
3387
         inline std::size_t process(generator& g) exprtk_override
3388
21.6k
         {
3389
21.6k
            if (g.token_list_.empty())
3390
0
               return 0;
3391
3392
21.6k
            switch (stride_)
3393
21.6k
            {
3394
10.8k
               case 2  : return process_stride_2(g);
3395
10.8k
               case 3  : return process_stride_3(g);
3396
0
               default : return 0;
3397
21.6k
            }
3398
21.6k
         }
3399
3400
0
         virtual bool join(const token&, const token&, token&)               { return false; }
3401
0
         virtual bool join(const token&, const token&, const token&, token&) { return false; }
3402
3403
      private:
3404
3405
         inline std::size_t process_stride_2(generator& g)
3406
10.8k
         {
3407
10.8k
            if (g.token_list_.size() < 2)
3408
876
               return 0;
3409
3410
9.94k
            std::size_t changes = 0;
3411
3412
9.94k
            generator::token_list_t token_list;
3413
9.94k
            token_list.reserve(10000);
3414
3415
3.26M
            for (int i = 0; i < static_cast<int>(g.token_list_.size() - 1); ++i)
3416
3.25M
            {
3417
3.25M
               token t;
3418
3419
3.25M
               for ( ; ; )
3420
3.30M
               {
3421
3.30M
                  if (!join(g[i], g[i + 1], t))
3422
3.25M
                  {
3423
3.25M
                     token_list.push_back(g[i]);
3424
3.25M
                     break;
3425
3.25M
                  }
3426
3427
43.0k
                  token_list.push_back(t);
3428
3429
43.0k
                  ++changes;
3430
3431
43.0k
                  i += 2;
3432
3433
43.0k
                  if (static_cast<std::size_t>(i) >= (g.token_list_.size() - 1))
3434
160
                     break;
3435
43.0k
               }
3436
3.25M
            }
3437
3438
9.94k
            token_list.push_back(g.token_list_.back());
3439
3440
9.94k
            assert(token_list.size() <= g.token_list_.size());
3441
3442
9.94k
            std::swap(token_list, g.token_list_);
3443
3444
9.94k
            return changes;
3445
9.94k
         }
3446
3447
         inline std::size_t process_stride_3(generator& g)
3448
10.8k
         {
3449
10.8k
            if (g.token_list_.size() < 3)
3450
1.31k
               return 0;
3451
3452
9.51k
            std::size_t changes = 0;
3453
3454
9.51k
            generator::token_list_t token_list;
3455
9.51k
            token_list.reserve(10000);
3456
3457
3.30M
            for (int i = 0; i < static_cast<int>(g.token_list_.size() - 2); ++i)
3458
3.29M
            {
3459
3.29M
               token t;
3460
3461
3.29M
               for ( ; ; )
3462
3.29M
               {
3463
3.29M
                  if (!join(g[i], g[i + 1], g[i + 2], t))
3464
3.29M
                  {
3465
3.29M
                     token_list.push_back(g[i]);
3466
3.29M
                     break;
3467
3.29M
                  }
3468
3469
6
                  token_list.push_back(t);
3470
3471
6
                  ++changes;
3472
3473
6
                  i += 3;
3474
3475
6
                  if (static_cast<std::size_t>(i) >= (g.token_list_.size() - 2))
3476
4
                     break;
3477
6
               }
3478
3.29M
            }
3479
3480
9.51k
            token_list.push_back(*(g.token_list_.begin() + g.token_list_.size() - 2));
3481
9.51k
            token_list.push_back(*(g.token_list_.begin() + g.token_list_.size() - 1));
3482
3483
9.51k
            assert(token_list.size() <= g.token_list_.size());
3484
3485
9.51k
            std::swap(token_list, g.token_list_);
3486
3487
9.51k
            return changes;
3488
9.51k
         }
3489
3490
         const std::size_t stride_;
3491
      };
3492
3493
      namespace helper
3494
      {
3495
3496
         inline void dump(const lexer::generator& generator)
3497
0
         {
3498
0
            for (std::size_t i = 0; i < generator.size(); ++i)
3499
0
            {
3500
0
               const lexer::token& t = generator[i];
3501
0
               printf("Token[%02d] @ %03d  %6s  -->  '%s'\n",
3502
0
                      static_cast<int>(i),
3503
0
                      static_cast<int>(t.position),
3504
0
                      t.to_str(t.type).c_str(),
3505
0
                      t.value.c_str());
3506
0
            }
3507
0
         }
3508
3509
         class commutative_inserter : public lexer::token_inserter
3510
         {
3511
         public:
3512
3513
            using lexer::token_inserter::insert;
3514
3515
            commutative_inserter()
3516
12.8k
            : lexer::token_inserter(2)
3517
12.8k
            {}
3518
3519
            inline void ignore_symbol(const std::string& symbol)
3520
423k
            {
3521
423k
               ignore_set_.insert(symbol);
3522
423k
            }
3523
3524
            inline int insert(const lexer::token& t0, const lexer::token& t1, lexer::token& new_token) exprtk_override
3525
3.11M
            {
3526
3.11M
               bool match         = false;
3527
3.11M
               new_token.type     = lexer::token::e_mul;
3528
3.11M
               new_token.value    = "*";
3529
3.11M
               new_token.position = t1.position;
3530
3531
3.11M
               if (t0.type == lexer::token::e_symbol)
3532
605k
               {
3533
605k
                  if (ignore_set_.end() != ignore_set_.find(t0.value))
3534
21.5k
                  {
3535
21.5k
                     return -1;
3536
21.5k
                  }
3537
584k
                  else if (!t0.value.empty() && ('$' == t0.value[0]))
3538
554
                  {
3539
554
                     return -1;
3540
554
                  }
3541
605k
               }
3542
3543
3.09M
               if (t1.type == lexer::token::e_symbol)
3544
599k
               {
3545
599k
                  if (ignore_set_.end() != ignore_set_.find(t1.value))
3546
21.1k
                  {
3547
21.1k
                     return -1;
3548
21.1k
                  }
3549
599k
               }
3550
3.07M
               if      ((t0.type == lexer::token::e_number     ) && (t1.type == lexer::token::e_symbol     )) match = true;
3551
2.90M
               else if ((t0.type == lexer::token::e_number     ) && (t1.type == lexer::token::e_lbracket   )) match = true;
3552
2.90M
               else if ((t0.type == lexer::token::e_number     ) && (t1.type == lexer::token::e_lcrlbracket)) match = true;
3553
2.90M
               else if ((t0.type == lexer::token::e_number     ) && (t1.type == lexer::token::e_lsqrbracket)) match = true;
3554
2.90M
               else if ((t0.type == lexer::token::e_symbol     ) && (t1.type == lexer::token::e_number     )) match = true;
3555
2.89M
               else if ((t0.type == lexer::token::e_rbracket   ) && (t1.type == lexer::token::e_number     )) match = true;
3556
2.89M
               else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_number     )) match = true;
3557
2.88M
               else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_number     )) match = true;
3558
2.88M
               else if ((t0.type == lexer::token::e_rbracket   ) && (t1.type == lexer::token::e_symbol     )) match = true;
3559
2.88M
               else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_symbol     )) match = true;
3560
2.88M
               else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_symbol     )) match = true;
3561
2.88M
               else if ((t0.type == lexer::token::e_symbol     ) && (t1.type == lexer::token::e_symbol     )) match = true;
3562
3563
3.07M
               return (match) ? 1 : -1;
3564
3.09M
            }
3565
3566
         private:
3567
3568
            std::set<std::string,details::ilesscompare> ignore_set_;
3569
         };
3570
3571
         class operator_joiner exprtk_final : public token_joiner
3572
         {
3573
         public:
3574
3575
            explicit operator_joiner(const std::size_t& stride)
3576
25.6k
            : token_joiner(stride)
3577
25.6k
            {}
3578
3579
            inline bool join(const lexer::token& t0, const lexer::token& t1, lexer::token& t) exprtk_override
3580
3.30M
            {
3581
               // ': =' --> ':='
3582
3.30M
               if ((t0.type == lexer::token::e_colon) && (t1.type == lexer::token::e_eq))
3583
2
               {
3584
2
                  t.type     = lexer::token::e_assign;
3585
2
                  t.value    = ":=";
3586
2
                  t.position = t0.position;
3587
3588
2
                  return true;
3589
2
               }
3590
               // '+ =' --> '+='
3591
3.30M
               else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_eq))
3592
4
               {
3593
4
                  t.type     = lexer::token::e_addass;
3594
4
                  t.value    = "+=";
3595
4
                  t.position = t0.position;
3596
3597
4
                  return true;
3598
4
               }
3599
               // '- =' --> '-='
3600
3.30M
               else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_eq))
3601
4.48k
               {
3602
4.48k
                  t.type     = lexer::token::e_subass;
3603
4.48k
                  t.value    = "-=";
3604
4.48k
                  t.position = t0.position;
3605
3606
4.48k
                  return true;
3607
4.48k
               }
3608
               // '* =' --> '*='
3609
3.29M
               else if ((t0.type == lexer::token::e_mul) && (t1.type == lexer::token::e_eq))
3610
2
               {
3611
2
                  t.type     = lexer::token::e_mulass;
3612
2
                  t.value    = "*=";
3613
2
                  t.position = t0.position;
3614
3615
2
                  return true;
3616
2
               }
3617
               // '/ =' --> '/='
3618
3.29M
               else if ((t0.type == lexer::token::e_div) && (t1.type == lexer::token::e_eq))
3619
4
               {
3620
4
                  t.type     = lexer::token::e_divass;
3621
4
                  t.value    = "/=";
3622
4
                  t.position = t0.position;
3623
3624
4
                  return true;
3625
4
               }
3626
               // '% =' --> '%='
3627
3.29M
               else if ((t0.type == lexer::token::e_mod) && (t1.type == lexer::token::e_eq))
3628
2
               {
3629
2
                  t.type     = lexer::token::e_modass;
3630
2
                  t.value    = "%=";
3631
2
                  t.position = t0.position;
3632
3633
2
                  return true;
3634
2
               }
3635
               // '> =' --> '>='
3636
3.29M
               else if ((t0.type == lexer::token::e_gt) && (t1.type == lexer::token::e_eq))
3637
6
               {
3638
6
                  t.type     = lexer::token::e_gte;
3639
6
                  t.value    = ">=";
3640
6
                  t.position = t0.position;
3641
3642
6
                  return true;
3643
6
               }
3644
               // '< =' --> '<='
3645
3.29M
               else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_eq))
3646
14
               {
3647
14
                  t.type     = lexer::token::e_lte;
3648
14
                  t.value    = "<=";
3649
14
                  t.position = t0.position;
3650
3651
14
                  return true;
3652
14
               }
3653
               // '= =' --> '=='
3654
3.29M
               else if ((t0.type == lexer::token::e_eq) && (t1.type == lexer::token::e_eq))
3655
138
               {
3656
138
                  t.type     = lexer::token::e_eq;
3657
138
                  t.value    = "==";
3658
138
                  t.position = t0.position;
3659
3660
138
                  return true;
3661
138
               }
3662
               // '! =' --> '!='
3663
3.29M
               else if ((static_cast<details::char_t>(t0.type) == '!') && (t1.type == lexer::token::e_eq))
3664
2
               {
3665
2
                  t.type     = lexer::token::e_ne;
3666
2
                  t.value    = "!=";
3667
2
                  t.position = t0.position;
3668
3669
2
                  return true;
3670
2
               }
3671
               // '< >' --> '<>'
3672
3.29M
               else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_gt))
3673
4
               {
3674
4
                  t.type     = lexer::token::e_ne;
3675
4
                  t.value    = "<>";
3676
4
                  t.position = t0.position;
3677
3678
4
                  return true;
3679
4
               }
3680
               // '<= >' --> '<=>'
3681
3.29M
               else if ((t0.type == lexer::token::e_lte) && (t1.type == lexer::token::e_gt))
3682
0
               {
3683
0
                  t.type     = lexer::token::e_swap;
3684
0
                  t.value    = "<=>";
3685
0
                  t.position = t0.position;
3686
3687
0
                  return true;
3688
0
               }
3689
               // '+ -' --> '-'
3690
3.29M
               else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_sub))
3691
221
               {
3692
221
                  t.type     = lexer::token::e_sub;
3693
221
                  t.value    = "-";
3694
221
                  t.position = t0.position;
3695
3696
221
                  return true;
3697
221
               }
3698
               // '- +' --> '-'
3699
3.29M
               else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_add))
3700
388
               {
3701
388
                  t.type     = lexer::token::e_sub;
3702
388
                  t.value    = "-";
3703
388
                  t.position = t0.position;
3704
3705
388
                  return true;
3706
388
               }
3707
               // '- -' --> '+'
3708
3.29M
               else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_sub))
3709
37.8k
               {
3710
                  /*
3711
                     Note: May need to reconsider this when wanting to implement
3712
                     pre/postfix decrement operator
3713
                  */
3714
37.8k
                  t.type     = lexer::token::e_add;
3715
37.8k
                  t.value    = "+";
3716
37.8k
                  t.position = t0.position;
3717
3718
37.8k
                  return true;
3719
37.8k
               }
3720
3.25M
               else
3721
3.25M
                  return false;
3722
3.30M
            }
3723
3724
            inline bool join(const lexer::token& t0,
3725
                             const lexer::token& t1,
3726
                             const lexer::token& t2,
3727
                             lexer::token& t) exprtk_override
3728
3.29M
            {
3729
               // '[ * ]' --> '[*]'
3730
3.29M
               if (
3731
3.29M
                    (t0.type == lexer::token::e_lsqrbracket) &&
3732
3.29M
                    (t1.type == lexer::token::e_mul        ) &&
3733
3.29M
                    (t2.type == lexer::token::e_rsqrbracket)
3734
3.29M
                  )
3735
6
               {
3736
6
                  t.type     = lexer::token::e_symbol;
3737
6
                  t.value    = "[*]";
3738
6
                  t.position = t0.position;
3739
3740
6
                  return true;
3741
6
               }
3742
3.29M
               else
3743
3.29M
                  return false;
3744
3.29M
            }
3745
         };
3746
3747
         class bracket_checker exprtk_final : public lexer::token_scanner
3748
         {
3749
         public:
3750
3751
            using lexer::token_scanner::operator();
3752
3753
            bracket_checker()
3754
12.8k
            : token_scanner(1)
3755
12.8k
            , state_(true)
3756
12.8k
            {}
3757
3758
            bool result() exprtk_override
3759
10.6k
            {
3760
10.6k
               if (!stack_.empty())
3761
188
               {
3762
188
                  lexer::token t;
3763
188
                  t.value      = stack_.top().first;
3764
188
                  t.position   = stack_.top().second;
3765
188
                  error_token_ = t;
3766
188
                  state_       = false;
3767
3768
188
                  return false;
3769
188
               }
3770
10.4k
               else
3771
10.4k
                  return state_;
3772
10.6k
            }
3773
3774
            lexer::token error_token()
3775
698
            {
3776
698
               return error_token_;
3777
698
            }
3778
3779
            void reset() exprtk_override
3780
10.6k
            {
3781
               // Why? because msvc doesn't support swap properly.
3782
10.6k
               stack_ = std::stack<std::pair<char,std::size_t> >();
3783
10.6k
               state_ = true;
3784
10.6k
               error_token_.clear();
3785
10.6k
            }
3786
3787
            bool operator() (const lexer::token& t) exprtk_override
3788
3.26M
            {
3789
3.26M
               if (
3790
3.26M
                    !t.value.empty()                       &&
3791
3.26M
                    (lexer::token::e_string != t.type)     &&
3792
3.26M
                    (lexer::token::e_symbol != t.type)     &&
3793
3.26M
                    exprtk::details::is_bracket(t.value[0])
3794
3.26M
                  )
3795
589k
               {
3796
589k
                  details::char_t c = t.value[0];
3797
3798
589k
                  if      (t.type == lexer::token::e_lbracket   ) stack_.push(std::make_pair(')',t.position));
3799
586k
                  else if (t.type == lexer::token::e_lcrlbracket) stack_.push(std::make_pair('}',t.position));
3800
579k
                  else if (t.type == lexer::token::e_lsqrbracket) stack_.push(std::make_pair(']',t.position));
3801
12.4k
                  else if (exprtk::details::is_right_bracket(c))
3802
12.4k
                  {
3803
12.4k
                     if (stack_.empty())
3804
161
                     {
3805
161
                        state_       = false;
3806
161
                        error_token_ = t;
3807
3808
161
                        return false;
3809
161
                     }
3810
12.3k
                     else if (c != stack_.top().first)
3811
9
                     {
3812
9
                        state_       = false;
3813
9
                        error_token_ = t;
3814
3815
9
                        return false;
3816
9
                     }
3817
12.2k
                     else
3818
12.2k
                        stack_.pop();
3819
12.4k
                  }
3820
589k
               }
3821
3822
3.26M
               return true;
3823
3.26M
            }
3824
3825
         private:
3826
3827
            bool state_;
3828
            std::stack<std::pair<char,std::size_t> > stack_;
3829
            lexer::token error_token_;
3830
         };
3831
3832
         template <typename T>
3833
         class numeric_checker exprtk_final : public lexer::token_scanner
3834
         {
3835
         public:
3836
3837
            using lexer::token_scanner::operator();
3838
3839
            numeric_checker()
3840
12.8k
            : token_scanner (1)
3841
12.8k
            , current_index_(0)
3842
12.8k
            {}
exprtk::lexer::helper::numeric_checker<double>::numeric_checker()
Line
Count
Source
3840
6.42k
            : token_scanner (1)
3841
6.42k
            , current_index_(0)
3842
6.42k
            {}
exprtk::lexer::helper::numeric_checker<float>::numeric_checker()
Line
Count
Source
3840
6.42k
            : token_scanner (1)
3841
6.42k
            , current_index_(0)
3842
6.42k
            {}
3843
3844
            bool result() exprtk_override
3845
10.8k
            {
3846
10.8k
               return error_list_.empty();
3847
10.8k
            }
exprtk::lexer::helper::numeric_checker<double>::result()
Line
Count
Source
3845
5.41k
            {
3846
5.41k
               return error_list_.empty();
3847
5.41k
            }
exprtk::lexer::helper::numeric_checker<float>::result()
Line
Count
Source
3845
5.41k
            {
3846
5.41k
               return error_list_.empty();
3847
5.41k
            }
3848
3849
            void reset() exprtk_override
3850
10.8k
            {
3851
10.8k
               error_list_.clear();
3852
10.8k
               current_index_ = 0;
3853
10.8k
            }
exprtk::lexer::helper::numeric_checker<double>::reset()
Line
Count
Source
3850
5.41k
            {
3851
5.41k
               error_list_.clear();
3852
5.41k
               current_index_ = 0;
3853
5.41k
            }
exprtk::lexer::helper::numeric_checker<float>::reset()
Line
Count
Source
3850
5.41k
            {
3851
5.41k
               error_list_.clear();
3852
5.41k
               current_index_ = 0;
3853
5.41k
            }
3854
3855
            bool operator() (const lexer::token& t) exprtk_override
3856
3.31M
            {
3857
3.31M
               if (token::e_number == t.type)
3858
505k
               {
3859
505k
                  T v;
3860
3861
505k
                  if (!exprtk::details::string_to_real(t.value,v))
3862
1.00k
                  {
3863
1.00k
                     error_list_.push_back(current_index_);
3864
1.00k
                  }
3865
505k
               }
3866
3867
3.31M
               ++current_index_;
3868
3869
3.31M
               return true;
3870
3.31M
            }
exprtk::lexer::helper::numeric_checker<double>::operator()(exprtk::lexer::token const&)
Line
Count
Source
3856
1.93M
            {
3857
1.93M
               if (token::e_number == t.type)
3858
301k
               {
3859
301k
                  T v;
3860
3861
301k
                  if (!exprtk::details::string_to_real(t.value,v))
3862
432
                  {
3863
432
                     error_list_.push_back(current_index_);
3864
432
                  }
3865
301k
               }
3866
3867
1.93M
               ++current_index_;
3868
3869
1.93M
               return true;
3870
1.93M
            }
exprtk::lexer::helper::numeric_checker<float>::operator()(exprtk::lexer::token const&)
Line
Count
Source
3856
1.37M
            {
3857
1.37M
               if (token::e_number == t.type)
3858
204k
               {
3859
204k
                  T v;
3860
3861
204k
                  if (!exprtk::details::string_to_real(t.value,v))
3862
573
                  {
3863
573
                     error_list_.push_back(current_index_);
3864
573
                  }
3865
204k
               }
3866
3867
1.37M
               ++current_index_;
3868
3869
1.37M
               return true;
3870
1.37M
            }
3871
3872
            std::size_t error_count() const
3873
1.37k
            {
3874
1.37k
               return error_list_.size();
3875
1.37k
            }
exprtk::lexer::helper::numeric_checker<double>::error_count() const
Line
Count
Source
3873
568
            {
3874
568
               return error_list_.size();
3875
568
            }
exprtk::lexer::helper::numeric_checker<float>::error_count() const
Line
Count
Source
3873
807
            {
3874
807
               return error_list_.size();
3875
807
            }
3876
3877
            std::size_t error_index(const std::size_t& i)
3878
1.00k
            {
3879
1.00k
               if (i < error_list_.size())
3880
1.00k
                  return error_list_[i];
3881
0
               else
3882
0
                  return std::numeric_limits<std::size_t>::max();
3883
1.00k
            }
exprtk::lexer::helper::numeric_checker<double>::error_index(unsigned long const&)
Line
Count
Source
3878
432
            {
3879
432
               if (i < error_list_.size())
3880
432
                  return error_list_[i];
3881
0
               else
3882
0
                  return std::numeric_limits<std::size_t>::max();
3883
432
            }
exprtk::lexer::helper::numeric_checker<float>::error_index(unsigned long const&)
Line
Count
Source
3878
573
            {
3879
573
               if (i < error_list_.size())
3880
573
                  return error_list_[i];
3881
0
               else
3882
0
                  return std::numeric_limits<std::size_t>::max();
3883
573
            }
3884
3885
            void clear_errors()
3886
185
            {
3887
185
               error_list_.clear();
3888
185
            }
exprtk::lexer::helper::numeric_checker<double>::clear_errors()
Line
Count
Source
3886
68
            {
3887
68
               error_list_.clear();
3888
68
            }
exprtk::lexer::helper::numeric_checker<float>::clear_errors()
Line
Count
Source
3886
117
            {
3887
117
               error_list_.clear();
3888
117
            }
3889
3890
         private:
3891
3892
            std::size_t current_index_;
3893
            std::vector<std::size_t> error_list_;
3894
         };
3895
3896
         class symbol_replacer exprtk_final : public lexer::token_modifier
3897
         {
3898
         private:
3899
3900
            typedef std::map<std::string,std::pair<std::string,token::token_type>,details::ilesscompare> replace_map_t;
3901
3902
         public:
3903
3904
            bool remove(const std::string& target_symbol)
3905
0
            {
3906
0
               const replace_map_t::iterator itr = replace_map_.find(target_symbol);
3907
0
3908
0
               if (replace_map_.end() == itr)
3909
0
                  return false;
3910
0
3911
0
               replace_map_.erase(itr);
3912
0
3913
0
               return true;
3914
0
            }
3915
3916
            bool add_replace(const std::string& target_symbol,
3917
                             const std::string& replace_symbol,
3918
                             const lexer::token::token_type token_type = lexer::token::e_symbol)
3919
25.6k
            {
3920
25.6k
               const replace_map_t::iterator itr = replace_map_.find(target_symbol);
3921
3922
25.6k
               if (replace_map_.end() != itr)
3923
0
               {
3924
0
                  return false;
3925
0
               }
3926
3927
25.6k
               replace_map_[target_symbol] = std::make_pair(replace_symbol,token_type);
3928
3929
25.6k
               return true;
3930
25.6k
            }
3931
3932
            void clear()
3933
12.8k
            {
3934
12.8k
               replace_map_.clear();
3935
12.8k
            }
3936
3937
         private:
3938
3939
            bool modify(lexer::token& t) exprtk_override
3940
3.31M
            {
3941
3.31M
               if (lexer::token::e_symbol == t.type)
3942
609k
               {
3943
609k
                  if (replace_map_.empty())
3944
0
                     return false;
3945
3946
609k
                  const replace_map_t::iterator itr = replace_map_.find(t.value);
3947
3948
609k
                  if (replace_map_.end() != itr)
3949
2
                  {
3950
2
                     t.value = itr->second.first;
3951
2
                     t.type  = itr->second.second;
3952
3953
2
                     return true;
3954
2
                  }
3955
609k
               }
3956
3957
3.31M
               return false;
3958
3.31M
            }
3959
3960
            replace_map_t replace_map_;
3961
         };
3962
3963
         class sequence_validator exprtk_final : public lexer::token_scanner
3964
         {
3965
         private:
3966
3967
            typedef std::pair<lexer::token::token_type,lexer::token::token_type> token_pair_t;
3968
            typedef std::set<token_pair_t> set_t;
3969
3970
         public:
3971
3972
            using lexer::token_scanner::operator();
3973
3974
            sequence_validator()
3975
12.8k
            : lexer::token_scanner(2)
3976
12.8k
            {
3977
12.8k
               add_invalid(lexer::token::e_number, lexer::token::e_number);
3978
12.8k
               add_invalid(lexer::token::e_string, lexer::token::e_string);
3979
12.8k
               add_invalid(lexer::token::e_number, lexer::token::e_string);
3980
12.8k
               add_invalid(lexer::token::e_string, lexer::token::e_number);
3981
3982
12.8k
               add_invalid_set1(lexer::token::e_assign );
3983
12.8k
               add_invalid_set1(lexer::token::e_shr    );
3984
12.8k
               add_invalid_set1(lexer::token::e_shl    );
3985
12.8k
               add_invalid_set1(lexer::token::e_lte    );
3986
12.8k
               add_invalid_set1(lexer::token::e_ne     );
3987
12.8k
               add_invalid_set1(lexer::token::e_gte    );
3988
12.8k
               add_invalid_set1(lexer::token::e_lt     );
3989
12.8k
               add_invalid_set1(lexer::token::e_gt     );
3990
12.8k
               add_invalid_set1(lexer::token::e_eq     );
3991
12.8k
               add_invalid_set1(lexer::token::e_comma  );
3992
12.8k
               add_invalid_set1(lexer::token::e_add    );
3993
12.8k
               add_invalid_set1(lexer::token::e_sub    );
3994
12.8k
               add_invalid_set1(lexer::token::e_div    );
3995
12.8k
               add_invalid_set1(lexer::token::e_mul    );
3996
12.8k
               add_invalid_set1(lexer::token::e_mod    );
3997
12.8k
               add_invalid_set1(lexer::token::e_pow    );
3998
12.8k
               add_invalid_set1(lexer::token::e_colon  );
3999
12.8k
               add_invalid_set1(lexer::token::e_ternary);
4000
12.8k
            }
4001
4002
            bool result() exprtk_override
4003
10.2k
            {
4004
10.2k
               return error_list_.empty();
4005
10.2k
            }
4006
4007
            bool operator() (const lexer::token& t0, const lexer::token& t1) exprtk_override
4008
2.35M
            {
4009
2.35M
               const set_t::value_type p = std::make_pair(t0.type,t1.type);
4010
4011
2.35M
               if (invalid_bracket_check(t0.type,t1.type))
4012
32
               {
4013
32
                  error_list_.push_back(std::make_pair(t0,t1));
4014
32
               }
4015
2.35M
               else if (invalid_comb_.find(p) != invalid_comb_.end())
4016
118k
               {
4017
118k
                  error_list_.push_back(std::make_pair(t0,t1));
4018
118k
               }
4019
4020
2.35M
               return true;
4021
2.35M
            }
4022
4023
            std::size_t error_count() const
4024
119k
            {
4025
119k
               return error_list_.size();
4026
119k
            }
4027
4028
            std::pair<lexer::token,lexer::token> error(const std::size_t index)
4029
118k
            {
4030
118k
               if (index < error_list_.size())
4031
118k
               {
4032
118k
                  return error_list_[index];
4033
118k
               }
4034
0
               else
4035
0
               {
4036
0
                  static const lexer::token error_token;
4037
0
                  return std::make_pair(error_token,error_token);
4038
0
               }
4039
118k
            }
4040
4041
            void clear_errors()
4042
410
            {
4043
410
               error_list_.clear();
4044
410
            }
4045
4046
         private:
4047
4048
            void add_invalid(const lexer::token::token_type base, const lexer::token::token_type t)
4049
3.51M
            {
4050
3.51M
               invalid_comb_.insert(std::make_pair(base,t));
4051
3.51M
            }
4052
4053
            void add_invalid_set1(const lexer::token::token_type t)
4054
231k
            {
4055
231k
               add_invalid(t, lexer::token::e_assign);
4056
231k
               add_invalid(t, lexer::token::e_shr   );
4057
231k
               add_invalid(t, lexer::token::e_shl   );
4058
231k
               add_invalid(t, lexer::token::e_lte   );
4059
231k
               add_invalid(t, lexer::token::e_ne    );
4060
231k
               add_invalid(t, lexer::token::e_gte   );
4061
231k
               add_invalid(t, lexer::token::e_lt    );
4062
231k
               add_invalid(t, lexer::token::e_gt    );
4063
231k
               add_invalid(t, lexer::token::e_eq    );
4064
231k
               add_invalid(t, lexer::token::e_comma );
4065
231k
               add_invalid(t, lexer::token::e_div   );
4066
231k
               add_invalid(t, lexer::token::e_mul   );
4067
231k
               add_invalid(t, lexer::token::e_mod   );
4068
231k
               add_invalid(t, lexer::token::e_pow   );
4069
231k
               add_invalid(t, lexer::token::e_colon );
4070
231k
            }
4071
4072
            bool invalid_bracket_check(const lexer::token::token_type base, const lexer::token::token_type t)
4073
2.35M
            {
4074
2.35M
               if (details::is_right_bracket(static_cast<details::char_t>(base)))
4075
9.92k
               {
4076
9.92k
                  switch (t)
4077
9.92k
                  {
4078
0
                     case lexer::token::e_assign : return (']' != base);
4079
8
                     case lexer::token::e_string : return (')' != base);
4080
9.91k
                     default                     : return false;
4081
9.92k
                  }
4082
9.92k
               }
4083
2.34M
               else if (details::is_left_bracket(static_cast<details::char_t>(base)))
4084
10.2k
               {
4085
10.2k
                  if (details::is_right_bracket(static_cast<details::char_t>(t)))
4086
201
                     return false;
4087
10.0k
                  else if (details::is_left_bracket(static_cast<details::char_t>(t)))
4088
21
                     return false;
4089
10.0k
                  else
4090
10.0k
                  {
4091
10.0k
                     switch (t)
4092
10.0k
                     {
4093
2.02k
                        case lexer::token::e_number  : return false;
4094
7.56k
                        case lexer::token::e_symbol  : return false;
4095
4
                        case lexer::token::e_string  : return false;
4096
236
                        case lexer::token::e_add     : return false;
4097
171
                        case lexer::token::e_sub     : return false;
4098
34
                        case lexer::token::e_colon   : return false;
4099
0
                        case lexer::token::e_ternary : return false;
4100
8
                        default                      : return true ;
4101
10.0k
                     }
4102
10.0k
                  }
4103
10.2k
               }
4104
2.33M
               else if (details::is_right_bracket(static_cast<details::char_t>(t)))
4105
10.0k
               {
4106
10.0k
                  switch (base)
4107
10.0k
                  {
4108
4.18k
                     case lexer::token::e_number  : return false;
4109
5.63k
                     case lexer::token::e_symbol  : return false;
4110
2
                     case lexer::token::e_string  : return false;
4111
2
                     case lexer::token::e_eof     : return false;
4112
214
                     case lexer::token::e_colon   : return false;
4113
0
                     case lexer::token::e_ternary : return false;
4114
20
                     default                      : return true ;
4115
10.0k
                  }
4116
10.0k
               }
4117
2.32M
               else if (details::is_left_bracket(static_cast<details::char_t>(t)))
4118
9.13k
               {
4119
9.13k
                  switch (base)
4120
9.13k
                  {
4121
0
                     case lexer::token::e_rbracket    : return true;
4122
0
                     case lexer::token::e_rsqrbracket : return true;
4123
0
                     case lexer::token::e_rcrlbracket : return true;
4124
9.13k
                     default                          : return false;
4125
9.13k
                  }
4126
9.13k
               }
4127
4128
2.31M
               return false;
4129
2.35M
            }
4130
4131
            set_t invalid_comb_;
4132
            std::vector<std::pair<lexer::token,lexer::token> > error_list_;
4133
         };
4134
4135
         class sequence_validator_3tokens exprtk_final : public lexer::token_scanner
4136
         {
4137
         private:
4138
4139
            typedef lexer::token::token_type token_t;
4140
            typedef std::pair<token_t,std::pair<token_t,token_t> > token_triplet_t;
4141
            typedef std::set<token_triplet_t> set_t;
4142
4143
         public:
4144
4145
            using lexer::token_scanner::operator();
4146
4147
            sequence_validator_3tokens()
4148
12.8k
            : lexer::token_scanner(3)
4149
12.8k
            {
4150
12.8k
               add_invalid(lexer::token::e_number , lexer::token::e_number , lexer::token::e_number);
4151
12.8k
               add_invalid(lexer::token::e_string , lexer::token::e_string , lexer::token::e_string);
4152
12.8k
               add_invalid(lexer::token::e_comma  , lexer::token::e_comma  , lexer::token::e_comma );
4153
4154
12.8k
               add_invalid(lexer::token::e_add    , lexer::token::e_add    , lexer::token::e_add   );
4155
12.8k
               add_invalid(lexer::token::e_sub    , lexer::token::e_sub    , lexer::token::e_sub   );
4156
12.8k
               add_invalid(lexer::token::e_div    , lexer::token::e_div    , lexer::token::e_div   );
4157
12.8k
               add_invalid(lexer::token::e_mul    , lexer::token::e_mul    , lexer::token::e_mul   );
4158
12.8k
               add_invalid(lexer::token::e_mod    , lexer::token::e_mod    , lexer::token::e_mod   );
4159
12.8k
               add_invalid(lexer::token::e_pow    , lexer::token::e_pow    , lexer::token::e_pow   );
4160
4161
12.8k
               add_invalid(lexer::token::e_add    , lexer::token::e_sub    , lexer::token::e_add   );
4162
12.8k
               add_invalid(lexer::token::e_sub    , lexer::token::e_add    , lexer::token::e_sub   );
4163
12.8k
               add_invalid(lexer::token::e_div    , lexer::token::e_mul    , lexer::token::e_div   );
4164
12.8k
               add_invalid(lexer::token::e_mul    , lexer::token::e_div    , lexer::token::e_mul   );
4165
12.8k
               add_invalid(lexer::token::e_mod    , lexer::token::e_pow    , lexer::token::e_mod   );
4166
12.8k
               add_invalid(lexer::token::e_pow    , lexer::token::e_mod    , lexer::token::e_pow   );
4167
12.8k
            }
4168
4169
            bool result() exprtk_override
4170
9.87k
            {
4171
9.87k
               return error_list_.empty();
4172
9.87k
            }
4173
4174
            bool operator() (const lexer::token& t0, const lexer::token& t1, const lexer::token& t2) exprtk_override
4175
1.76M
            {
4176
1.76M
               const set_t::value_type p = std::make_pair(t0.type,std::make_pair(t1.type,t2.type));
4177
4178
1.76M
               if (invalid_comb_.find(p) != invalid_comb_.end())
4179
534
               {
4180
534
                  error_list_.push_back(std::make_pair(t0,t1));
4181
534
               }
4182
4183
1.76M
               return true;
4184
1.76M
            }
4185
4186
            std::size_t error_count() const
4187
594
            {
4188
594
               return error_list_.size();
4189
594
            }
4190
4191
            std::pair<lexer::token,lexer::token> error(const std::size_t index)
4192
534
            {
4193
534
               if (index < error_list_.size())
4194
534
               {
4195
534
                  return error_list_[index];
4196
534
               }
4197
0
               else
4198
0
               {
4199
0
                  static const lexer::token error_token;
4200
0
                  return std::make_pair(error_token,error_token);
4201
0
               }
4202
534
            }
4203
4204
            void clear_errors()
4205
30
            {
4206
30
               error_list_.clear();
4207
30
            }
4208
4209
         private:
4210
4211
            void add_invalid(const token_t t0, const token_t t1, const token_t t2)
4212
192k
            {
4213
192k
               invalid_comb_.insert(std::make_pair(t0,std::make_pair(t1,t2)));
4214
192k
            }
4215
4216
            set_t invalid_comb_;
4217
            std::vector<std::pair<lexer::token,lexer::token> > error_list_;
4218
         };
4219
4220
         struct helper_assembly
4221
         {
4222
            inline bool register_scanner(lexer::token_scanner* scanner)
4223
51.3k
            {
4224
51.3k
               if (token_scanner_list.end() != std::find(token_scanner_list.begin(),
4225
51.3k
                                                         token_scanner_list.end  (),
4226
51.3k
                                                         scanner))
4227
0
               {
4228
0
                  return false;
4229
0
               }
4230
4231
51.3k
               token_scanner_list.push_back(scanner);
4232
4233
51.3k
               return true;
4234
51.3k
            }
4235
4236
            inline bool register_modifier(lexer::token_modifier* modifier)
4237
12.8k
            {
4238
12.8k
               if (token_modifier_list.end() != std::find(token_modifier_list.begin(),
4239
12.8k
                                                          token_modifier_list.end  (),
4240
12.8k
                                                          modifier))
4241
0
               {
4242
0
                  return false;
4243
0
               }
4244
4245
12.8k
               token_modifier_list.push_back(modifier);
4246
4247
12.8k
               return true;
4248
12.8k
            }
4249
4250
            inline bool register_joiner(lexer::token_joiner* joiner)
4251
25.6k
            {
4252
25.6k
               if (token_joiner_list.end() != std::find(token_joiner_list.begin(),
4253
25.6k
                                                        token_joiner_list.end  (),
4254
25.6k
                                                        joiner))
4255
0
               {
4256
0
                  return false;
4257
0
               }
4258
4259
25.6k
               token_joiner_list.push_back(joiner);
4260
4261
25.6k
               return true;
4262
25.6k
            }
4263
4264
            inline bool register_inserter(lexer::token_inserter* inserter)
4265
12.8k
            {
4266
12.8k
               if (token_inserter_list.end() != std::find(token_inserter_list.begin(),
4267
12.8k
                                                          token_inserter_list.end  (),
4268
12.8k
                                                          inserter))
4269
0
               {
4270
0
                  return false;
4271
0
               }
4272
4273
12.8k
               token_inserter_list.push_back(inserter);
4274
4275
12.8k
               return true;
4276
12.8k
            }
4277
4278
            inline bool run_modifiers(lexer::generator& g)
4279
10.8k
            {
4280
10.8k
               error_token_modifier = reinterpret_cast<lexer::token_modifier*>(0);
4281
4282
21.6k
               for (std::size_t i = 0; i < token_modifier_list.size(); ++i)
4283
10.8k
               {
4284
10.8k
                  lexer::token_modifier& modifier = (*token_modifier_list[i]);
4285
4286
10.8k
                  modifier.reset();
4287
10.8k
                  modifier.process(g);
4288
4289
10.8k
                  if (!modifier.result())
4290
0
                  {
4291
0
                     error_token_modifier = token_modifier_list[i];
4292
4293
0
                     return false;
4294
0
                  }
4295
10.8k
               }
4296
4297
10.8k
               return true;
4298
10.8k
            }
4299
4300
            inline bool run_joiners(lexer::generator& g)
4301
10.8k
            {
4302
10.8k
               error_token_joiner = reinterpret_cast<lexer::token_joiner*>(0);
4303
4304
32.4k
               for (std::size_t i = 0; i < token_joiner_list.size(); ++i)
4305
21.6k
               {
4306
21.6k
                  lexer::token_joiner& joiner = (*token_joiner_list[i]);
4307
4308
21.6k
                  joiner.reset();
4309
21.6k
                  joiner.process(g);
4310
4311
21.6k
                  if (!joiner.result())
4312
0
                  {
4313
0
                     error_token_joiner = token_joiner_list[i];
4314
4315
0
                     return false;
4316
0
                  }
4317
21.6k
               }
4318
4319
10.8k
               return true;
4320
10.8k
            }
4321
4322
            inline bool run_inserters(lexer::generator& g)
4323
10.8k
            {
4324
10.8k
               error_token_inserter = reinterpret_cast<lexer::token_inserter*>(0);
4325
4326
21.6k
               for (std::size_t i = 0; i < token_inserter_list.size(); ++i)
4327
10.8k
               {
4328
10.8k
                  lexer::token_inserter& inserter = (*token_inserter_list[i]);
4329
4330
10.8k
                  inserter.reset();
4331
10.8k
                  inserter.process(g);
4332
4333
10.8k
                  if (!inserter.result())
4334
0
                  {
4335
0
                     error_token_inserter = token_inserter_list[i];
4336
4337
0
                     return false;
4338
0
                  }
4339
10.8k
               }
4340
4341
10.8k
               return true;
4342
10.8k
            }
4343
4344
            inline bool run_scanners(lexer::generator& g)
4345
10.8k
            {
4346
10.8k
               error_token_scanner = reinterpret_cast<lexer::token_scanner*>(0);
4347
4348
51.4k
               for (std::size_t i = 0; i < token_scanner_list.size(); ++i)
4349
41.6k
               {
4350
41.6k
                  lexer::token_scanner& scanner = (*token_scanner_list[i]);
4351
4352
41.6k
                  scanner.reset();
4353
41.6k
                  scanner.process(g);
4354
4355
41.6k
                  if (!scanner.result())
4356
974
                  {
4357
974
                     error_token_scanner = token_scanner_list[i];
4358
4359
974
                     return false;
4360
974
                  }
4361
41.6k
               }
4362
4363
9.84k
               return true;
4364
10.8k
            }
4365
4366
            std::vector<lexer::token_scanner*>  token_scanner_list;
4367
            std::vector<lexer::token_modifier*> token_modifier_list;
4368
            std::vector<lexer::token_joiner*>   token_joiner_list;
4369
            std::vector<lexer::token_inserter*> token_inserter_list;
4370
4371
            lexer::token_scanner*  error_token_scanner;
4372
            lexer::token_modifier* error_token_modifier;
4373
            lexer::token_joiner*   error_token_joiner;
4374
            lexer::token_inserter* error_token_inserter;
4375
         };
4376
      }
4377
4378
      class parser_helper
4379
      {
4380
      public:
4381
4382
         typedef token     token_t;
4383
         typedef generator generator_t;
4384
4385
         inline bool init(const std::string& str)
4386
12.8k
         {
4387
12.8k
            if (!lexer_.process(str))
4388
1.86k
            {
4389
1.86k
               return false;
4390
1.86k
            }
4391
4392
10.9k
            lexer_.begin();
4393
4394
10.9k
            next_token();
4395
4396
10.9k
            return true;
4397
12.8k
         }
4398
4399
         inline generator_t& lexer()
4400
598k
         {
4401
598k
            return lexer_;
4402
598k
         }
4403
4404
         inline const generator_t& lexer() const
4405
0
         {
4406
0
            return lexer_;
4407
0
         }
4408
4409
         inline void store_token()
4410
0
         {
4411
0
            lexer_.store();
4412
0
            store_current_token_ = current_token_;
4413
0
         }
4414
4415
         inline void restore_token()
4416
0
         {
4417
0
            lexer_.restore();
4418
0
            current_token_ = store_current_token_;
4419
0
         }
4420
4421
         inline void next_token()
4422
641k
         {
4423
641k
            current_token_ = lexer_.next_token();
4424
641k
         }
4425
4426
         inline const token_t& current_token() const
4427
3.61M
         {
4428
3.61M
            return current_token_;
4429
3.61M
         }
4430
4431
         inline const token_t& peek_next_token()
4432
0
         {
4433
0
            return lexer_.peek_next_token();
4434
0
         }
4435
4436
         enum token_advance_mode
4437
         {
4438
            e_hold    = 0,
4439
            e_advance = 1
4440
         };
4441
4442
         inline void advance_token(const token_advance_mode mode)
4443
29.0k
         {
4444
29.0k
            if (e_advance == mode)
4445
11.6k
            {
4446
11.6k
               next_token();
4447
11.6k
            }
4448
29.0k
         }
4449
4450
         inline bool token_is(const token_t::token_type& ttype, const token_advance_mode mode = e_advance)
4451
674k
         {
4452
674k
            if (current_token().type != ttype)
4453
645k
            {
4454
645k
               return false;
4455
645k
            }
4456
4457
29.0k
            advance_token(mode);
4458
4459
29.0k
            return true;
4460
674k
         }
4461
4462
         inline bool token_is(const token_t::token_type& ttype,
4463
                              const std::string& value,
4464
                              const token_advance_mode mode = e_advance)
4465
0
         {
4466
0
            if (
4467
0
                 (current_token().type != ttype) ||
4468
0
                 !exprtk::details::imatch(value,current_token().value)
4469
0
               )
4470
0
            {
4471
0
               return false;
4472
0
            }
4473
4474
0
            advance_token(mode);
4475
4476
0
            return true;
4477
0
         }
4478
4479
         inline bool token_is(const std::string& value,
4480
                              const token_advance_mode mode = e_advance)
4481
8
         {
4482
8
            if (!exprtk::details::imatch(value,current_token().value))
4483
4
            {
4484
4
               return false;
4485
4
            }
4486
4487
4
            advance_token(mode);
4488
4489
4
            return true;
4490
8
         }
4491
4492
         inline bool token_is_arithmetic_opr(const token_advance_mode mode = e_advance)
4493
0
         {
4494
0
            switch (current_token().type)
4495
0
            {
4496
0
               case token_t::e_add :
4497
0
               case token_t::e_sub :
4498
0
               case token_t::e_div :
4499
0
               case token_t::e_mul :
4500
0
               case token_t::e_mod :
4501
0
               case token_t::e_pow : break;
4502
0
               default             : return false;
4503
0
            }
4504
4505
0
            advance_token(mode);
4506
4507
0
            return true;
4508
0
         }
4509
4510
         inline bool token_is_ineq_opr(const token_advance_mode mode = e_advance)
4511
0
         {
4512
0
            switch (current_token().type)
4513
0
            {
4514
0
               case token_t::e_eq  :
4515
0
               case token_t::e_lte :
4516
0
               case token_t::e_ne  :
4517
0
               case token_t::e_gte :
4518
0
               case token_t::e_lt  :
4519
0
               case token_t::e_gt  : break;
4520
0
               default             : return false;
4521
0
            }
4522
4523
0
            advance_token(mode);
4524
4525
0
            return true;
4526
0
         }
4527
4528
         inline bool token_is_left_bracket(const token_advance_mode mode = e_advance)
4529
0
         {
4530
0
            switch (current_token().type)
4531
0
            {
4532
0
               case token_t::e_lbracket    :
4533
0
               case token_t::e_lcrlbracket :
4534
0
               case token_t::e_lsqrbracket : break;
4535
0
               default                     : return false;
4536
0
            }
4537
0
4538
0
            advance_token(mode);
4539
0
4540
0
            return true;
4541
0
         }
4542
4543
         inline bool token_is_right_bracket(const token_advance_mode mode = e_advance)
4544
0
         {
4545
0
            switch (current_token().type)
4546
0
            {
4547
0
               case token_t::e_rbracket    :
4548
0
               case token_t::e_rcrlbracket :
4549
0
               case token_t::e_rsqrbracket : break;
4550
0
               default                     : return false;
4551
0
            }
4552
4553
0
            advance_token(mode);
4554
4555
0
            return true;
4556
0
         }
4557
4558
         inline bool token_is_bracket(const token_advance_mode mode = e_advance)
4559
0
         {
4560
0
            switch (current_token().type)
4561
0
            {
4562
0
               case token_t::e_rbracket    :
4563
0
               case token_t::e_rcrlbracket :
4564
0
               case token_t::e_rsqrbracket :
4565
0
               case token_t::e_lbracket    :
4566
0
               case token_t::e_lcrlbracket :
4567
0
               case token_t::e_lsqrbracket : break;
4568
0
               default                     : return false;
4569
0
            }
4570
4571
0
            advance_token(mode);
4572
4573
0
            return true;
4574
0
         }
4575
4576
         inline bool token_is_loop(const token_advance_mode mode = e_advance)
4577
0
         {
4578
0
            return token_is("for"   , mode) ||
4579
0
                   token_is("while" , mode) ||
4580
0
                   token_is("repeat", mode) ;
4581
0
         }
4582
4583
         inline bool peek_token_is(const token_t::token_type& ttype)
4584
476k
         {
4585
476k
            return (lexer_.peek_next_token().type == ttype);
4586
476k
         }
4587
4588
         inline bool peek_token_is(const std::string& s)
4589
0
         {
4590
0
            return (exprtk::details::imatch(lexer_.peek_next_token().value,s));
4591
0
         }
4592
4593
      private:
4594
4595
         generator_t lexer_;
4596
         token_t     current_token_;
4597
         token_t     store_current_token_;
4598
      };
4599
   }
4600
4601
   template <typename T>
4602
   class vector_view
4603
   {
4604
   public:
4605
4606
      typedef T* data_ptr_t;
4607
4608
      vector_view(data_ptr_t data, const std::size_t& size)
4609
      : base_size_(size)
4610
      , size_(size)
4611
      , data_(data)
4612
      , data_ref_(0)
4613
      {
4614
         assert(size_ > 0);
4615
      }
4616
4617
      vector_view(const vector_view<T>& vv)
4618
      : base_size_(vv.base_size_)
4619
      , size_(vv.size_)
4620
      , data_(vv.data_)
4621
      , data_ref_(0)
4622
      {
4623
         assert(size_ > 0);
4624
      }
4625
4626
      inline void rebase(data_ptr_t data)
4627
      {
4628
         data_ = data;
4629
4630
         if (!data_ref_.empty())
4631
         {
4632
            for (std::size_t i = 0; i < data_ref_.size(); ++i)
4633
            {
4634
               (*data_ref_[i]) = data;
4635
            }
4636
         }
4637
      }
4638
4639
      inline data_ptr_t data() const
4640
      {
4641
         return data_;
4642
      }
4643
4644
      inline std::size_t base_size() const
4645
0
      {
4646
0
         return base_size_;
4647
0
      }
Unexecuted instantiation: exprtk::vector_view<double>::base_size() const
Unexecuted instantiation: exprtk::vector_view<float>::base_size() const
4648
4649
      inline std::size_t size() const
4650
0
      {
4651
0
         return size_;
4652
0
      }
Unexecuted instantiation: exprtk::vector_view<double>::size() const
Unexecuted instantiation: exprtk::vector_view<float>::size() const
4653
4654
      inline const T& operator[](const std::size_t index) const
4655
      {
4656
         assert(index < size_);
4657
         return data_[index];
4658
      }
4659
4660
      inline T& operator[](const std::size_t index)
4661
      {
4662
         assert(index < size_);
4663
         return data_[index];
4664
      }
4665
4666
      void set_ref(data_ptr_t* data_ref)
4667
0
      {
4668
0
         data_ref_.push_back(data_ref);
4669
0
         exprtk_debug(("vector_view::set_ref() - data_ref: %p data_ref_.size(): %d\n",
4670
0
                       reinterpret_cast<void*>(data_ref),
4671
0
                       static_cast<int>(data_ref_.size())));
4672
0
      }
Unexecuted instantiation: exprtk::vector_view<double>::set_ref(double**)
Unexecuted instantiation: exprtk::vector_view<float>::set_ref(float**)
4673
4674
      void remove_ref(data_ptr_t* data_ref)
4675
0
      {
4676
0
         data_ref_.erase(
4677
0
            std::remove(data_ref_.begin(), data_ref_.end(), data_ref),
4678
0
            data_ref_.end());
4679
0
         exprtk_debug(("vector_view::remove_ref() - data_ref: %p data_ref_.size(): %d\n",
4680
0
                       reinterpret_cast<void*>(data_ref),
4681
0
                       static_cast<int>(data_ref_.size())));
4682
0
      }
Unexecuted instantiation: exprtk::vector_view<double>::remove_ref(double**)
Unexecuted instantiation: exprtk::vector_view<float>::remove_ref(float**)
4683
4684
      bool set_size(const std::size_t new_size)
4685
      {
4686
         if ((new_size > 0) && (new_size <= base_size_))
4687
         {
4688
            size_ = new_size;
4689
            exprtk_debug(("vector_view::set_size() - data_: %p size: %lu\n",
4690
                          reinterpret_cast<void*>(data_),
4691
                          size_));
4692
            return true;
4693
         }
4694
4695
         exprtk_debug(("vector_view::set_size() - error invalid new_size: %lu  base_size: %lu\n",
4696
                       new_size,
4697
                       base_size_));
4698
         return false;
4699
      }
4700
4701
   private:
4702
4703
      const std::size_t base_size_;
4704
      std::size_t size_;
4705
      data_ptr_t  data_;
4706
      std::vector<data_ptr_t*> data_ref_;
4707
   };
4708
4709
   template <typename T>
4710
   inline vector_view<T> make_vector_view(T* data,
4711
                                          const std::size_t size, const std::size_t offset = 0)
4712
   {
4713
      return vector_view<T>(data + offset, size);
4714
   }
4715
4716
   template <typename T>
4717
   inline vector_view<T> make_vector_view(std::vector<T>& v,
4718
                                          const std::size_t size, const std::size_t offset = 0)
4719
   {
4720
      return vector_view<T>(v.data() + offset, size);
4721
   }
4722
4723
   template <typename T> class results_context;
4724
4725
   template <typename T>
4726
   struct type_store
4727
   {
4728
      enum store_type
4729
      {
4730
         e_unknown,
4731
         e_scalar ,
4732
         e_vector ,
4733
         e_string
4734
      };
4735
4736
      type_store()
4737
0
      : data(0)
4738
0
      , size(0)
4739
0
      , type(e_unknown)
4740
0
      {}
Unexecuted instantiation: exprtk::type_store<double>::type_store()
Unexecuted instantiation: exprtk::type_store<float>::type_store()
4741
4742
      union
4743
      {
4744
         void* data;
4745
         T*    vec_data;
4746
      };
4747
4748
      std::size_t size;
4749
      store_type  type;
4750
4751
      class parameter_list
4752
      {
4753
      public:
4754
4755
         explicit parameter_list(std::vector<type_store>& pl)
4756
0
         : parameter_list_(pl)
4757
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> > >&)
4758
4759
         inline bool empty() const
4760
         {
4761
            return parameter_list_.empty();
4762
         }
4763
4764
         inline std::size_t size() const
4765
         {
4766
            return parameter_list_.size();
4767
         }
4768
4769
         inline type_store& operator[](const std::size_t& index)
4770
         {
4771
            return parameter_list_[index];
4772
         }
4773
4774
         inline const type_store& operator[](const std::size_t& index) const
4775
         {
4776
            return parameter_list_[index];
4777
         }
4778
4779
         inline type_store& front()
4780
         {
4781
            return parameter_list_[0];
4782
         }
4783
4784
         inline const type_store& front() const
4785
         {
4786
            return parameter_list_[0];
4787
         }
4788
4789
         inline type_store& back()
4790
         {
4791
            return parameter_list_.back();
4792
         }
4793
4794
         inline const type_store& back() const
4795
         {
4796
            return parameter_list_.back();
4797
         }
4798
4799
      private:
4800
4801
         std::vector<type_store>& parameter_list_;
4802
4803
         friend class results_context<T>;
4804
      };
4805
4806
      template <typename ViewType>
4807
      struct type_view
4808
      {
4809
         typedef type_store<T> type_store_t;
4810
         typedef ViewType      value_t;
4811
4812
         explicit type_view(type_store_t& ts)
4813
         : ts_(ts)
4814
         , data_(reinterpret_cast<value_t*>(ts_.data))
4815
         {}
4816
4817
         explicit type_view(const type_store_t& ts)
4818
         : ts_(const_cast<type_store_t&>(ts))
4819
         , data_(reinterpret_cast<value_t*>(ts_.data))
4820
         {}
4821
4822
         inline std::size_t size() const
4823
         {
4824
            return ts_.size;
4825
         }
4826
4827
         inline value_t& operator[](const std::size_t& i)
4828
         {
4829
            return data_[i];
4830
         }
4831
4832
         inline const value_t& operator[](const std::size_t& i) const
4833
         {
4834
            return data_[i];
4835
         }
4836
4837
         inline const value_t* begin() const { return data_; }
4838
         inline       value_t* begin()       { return data_; }
4839
4840
         inline const value_t* end() const
4841
         {
4842
            return static_cast<value_t*>(data_ + ts_.size);
4843
         }
4844
4845
         inline value_t* end()
4846
         {
4847
            return static_cast<value_t*>(data_ + ts_.size);
4848
         }
4849
4850
         type_store_t& ts_;
4851
         value_t* data_;
4852
      };
4853
4854
      typedef type_view<T>    vector_view;
4855
      typedef type_view<char> string_view;
4856
4857
      struct scalar_view
4858
      {
4859
         typedef type_store<T> type_store_t;
4860
         typedef T value_t;
4861
4862
         explicit scalar_view(type_store_t& ts)
4863
         : v_(*reinterpret_cast<value_t*>(ts.data))
4864
         {}
4865
4866
         explicit scalar_view(const type_store_t& ts)
4867
         : v_(*reinterpret_cast<value_t*>(const_cast<type_store_t&>(ts).data))
4868
         {}
4869
4870
         inline value_t& operator() ()
4871
         {
4872
            return v_;
4873
         }
4874
4875
         inline const value_t& operator() () const
4876
         {
4877
            return v_;
4878
         }
4879
4880
         inline operator value_t() const
4881
         {
4882
            return v_;
4883
         }
4884
4885
         inline operator value_t()
4886
         {
4887
            return v_;
4888
         }
4889
4890
         template <typename IntType>
4891
         inline bool to_int(IntType& i) const
4892
         {
4893
            if (!exprtk::details::numeric::is_integer(v_))
4894
               return false;
4895
4896
            i = static_cast<IntType>(v_);
4897
4898
            return true;
4899
         }
4900
4901
         template <typename UIntType>
4902
         inline bool to_uint(UIntType& u) const
4903
         {
4904
            if (v_ < T(0))
4905
               return false;
4906
            else if (!exprtk::details::numeric::is_integer(v_))
4907
               return false;
4908
4909
            u = static_cast<UIntType>(v_);
4910
4911
            return true;
4912
         }
4913
4914
         T& v_;
4915
      };
4916
   };
4917
4918
   template <typename StringView>
4919
   inline std::string to_str(const StringView& view)
4920
   {
4921
      return std::string(view.begin(),view.size());
4922
   }
4923
4924
   #ifndef exprtk_disable_return_statement
4925
   namespace details
4926
   {
4927
      template <typename T> class return_node;
4928
      template <typename T> class return_envelope_node;
4929
   }
4930
   #endif
4931
4932
   template <typename T>
4933
   class results_context
4934
   {
4935
   public:
4936
4937
      typedef type_store<T> type_store_t;
4938
      typedef typename type_store_t::scalar_view scalar_t;
4939
      typedef typename type_store_t::vector_view vector_t;
4940
      typedef typename type_store_t::string_view string_t;
4941
4942
      results_context()
4943
0
      : results_available_(false)
4944
0
      {}
Unexecuted instantiation: exprtk::results_context<double>::results_context()
Unexecuted instantiation: exprtk::results_context<float>::results_context()
4945
4946
      inline std::size_t count() const
4947
      {
4948
         if (results_available_)
4949
            return parameter_list_.size();
4950
         else
4951
            return 0;
4952
      }
4953
4954
      inline type_store_t& operator[](const std::size_t& index)
4955
      {
4956
         return parameter_list_[index];
4957
      }
4958
4959
      inline const type_store_t& operator[](const std::size_t& index) const
4960
      {
4961
         return parameter_list_[index];
4962
      }
4963
4964
      inline bool get_scalar(const std::size_t& index, T& out) const
4965
      {
4966
         if (
4967
              (index < parameter_list_.size()) &&
4968
              (parameter_list_[index].type == type_store_t::e_scalar)
4969
            )
4970
         {
4971
            const scalar_t scalar(parameter_list_[index]);
4972
            out = scalar();
4973
            return true;
4974
         }
4975
4976
         return false;
4977
      }
4978
4979
      template <typename OutputIterator>
4980
      inline bool get_vector(const std::size_t& index, OutputIterator out_itr) const
4981
      {
4982
         if (
4983
              (index < parameter_list_.size()) &&
4984
              (parameter_list_[index].type == type_store_t::e_vector)
4985
            )
4986
         {
4987
            const vector_t vector(parameter_list_[index]);
4988
            for (std::size_t i = 0; i < vector.size(); ++i)
4989
            {
4990
               *(out_itr++) = vector[i];
4991
            }
4992
4993
            return true;
4994
         }
4995
4996
         return false;
4997
      }
4998
4999
      inline bool get_vector(const std::size_t& index, std::vector<T>& out) const
5000
      {
5001
         return get_vector(index,std::back_inserter(out));
5002
      }
5003
5004
      inline bool get_string(const std::size_t& index, std::string& out) const
5005
      {
5006
         if (
5007
              (index < parameter_list_.size()) &&
5008
              (parameter_list_[index].type == type_store_t::e_string)
5009
            )
5010
         {
5011
            const string_t str(parameter_list_[index]);
5012
            out.assign(str.begin(),str.size());
5013
            return true;
5014
         }
5015
5016
         return false;
5017
      }
5018
5019
   private:
5020
5021
      inline void clear()
5022
0
      {
5023
0
         results_available_ = false;
5024
0
      }
Unexecuted instantiation: exprtk::results_context<double>::clear()
Unexecuted instantiation: exprtk::results_context<float>::clear()
5025
5026
      typedef std::vector<type_store_t> ts_list_t;
5027
      typedef typename type_store_t::parameter_list parameter_list_t;
5028
5029
      inline void assign(const parameter_list_t& pl)
5030
0
      {
5031
0
         parameter_list_    = pl.parameter_list_;
5032
0
         results_available_ = true;
5033
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&)
5034
5035
      bool results_available_;
5036
      ts_list_t parameter_list_;
5037
5038
      #ifndef exprtk_disable_return_statement
5039
      friend class details::return_node<T>;
5040
      friend class details::return_envelope_node<T>;
5041
      #endif
5042
   };
5043
5044
   namespace details
5045
   {
5046
      enum operator_type
5047
      {
5048
         e_default , e_null    , e_add     , e_sub     ,
5049
         e_mul     , e_div     , e_mod     , e_pow     ,
5050
         e_atan2   , e_min     , e_max     , e_avg     ,
5051
         e_sum     , e_prod    , e_lt      , e_lte     ,
5052
         e_eq      , e_equal   , e_ne      , e_nequal  ,
5053
         e_gte     , e_gt      , e_and     , e_nand    ,
5054
         e_or      , e_nor     , e_xor     , e_xnor    ,
5055
         e_mand    , e_mor     , e_scand   , e_scor    ,
5056
         e_shr     , e_shl     , e_abs     , e_acos    ,
5057
         e_acosh   , e_asin    , e_asinh   , e_atan    ,
5058
         e_atanh   , e_ceil    , e_cos     , e_cosh    ,
5059
         e_exp     , e_expm1   , e_floor   , e_log     ,
5060
         e_log10   , e_log2    , e_log1p   , e_logn    ,
5061
         e_neg     , e_pos     , e_round   , e_roundn  ,
5062
         e_root    , e_sqrt    , e_sin     , e_sinc    ,
5063
         e_sinh    , e_sec     , e_csc     , e_tan     ,
5064
         e_tanh    , e_cot     , e_clamp   , e_iclamp  ,
5065
         e_inrange , e_sgn     , e_r2d     , e_d2r     ,
5066
         e_d2g     , e_g2d     , e_hypot   , e_notl    ,
5067
         e_erf     , e_erfc    , e_ncdf    , e_frac    ,
5068
         e_trunc   , e_assign  , e_addass  , e_subass  ,
5069
         e_mulass  , e_divass  , e_modass  , e_in      ,
5070
         e_like    , e_ilike   , e_multi   , e_smulti  ,
5071
         e_swap    ,
5072
5073
         // Do not add new functions/operators after this point.
5074
         e_sf00 = 1000, e_sf01 = 1001, e_sf02 = 1002, e_sf03 = 1003,
5075
         e_sf04 = 1004, e_sf05 = 1005, e_sf06 = 1006, e_sf07 = 1007,
5076
         e_sf08 = 1008, e_sf09 = 1009, e_sf10 = 1010, e_sf11 = 1011,
5077
         e_sf12 = 1012, e_sf13 = 1013, e_sf14 = 1014, e_sf15 = 1015,
5078
         e_sf16 = 1016, e_sf17 = 1017, e_sf18 = 1018, e_sf19 = 1019,
5079
         e_sf20 = 1020, e_sf21 = 1021, e_sf22 = 1022, e_sf23 = 1023,
5080
         e_sf24 = 1024, e_sf25 = 1025, e_sf26 = 1026, e_sf27 = 1027,
5081
         e_sf28 = 1028, e_sf29 = 1029, e_sf30 = 1030, e_sf31 = 1031,
5082
         e_sf32 = 1032, e_sf33 = 1033, e_sf34 = 1034, e_sf35 = 1035,
5083
         e_sf36 = 1036, e_sf37 = 1037, e_sf38 = 1038, e_sf39 = 1039,
5084
         e_sf40 = 1040, e_sf41 = 1041, e_sf42 = 1042, e_sf43 = 1043,
5085
         e_sf44 = 1044, e_sf45 = 1045, e_sf46 = 1046, e_sf47 = 1047,
5086
         e_sf48 = 1048, e_sf49 = 1049, e_sf50 = 1050, e_sf51 = 1051,
5087
         e_sf52 = 1052, e_sf53 = 1053, e_sf54 = 1054, e_sf55 = 1055,
5088
         e_sf56 = 1056, e_sf57 = 1057, e_sf58 = 1058, e_sf59 = 1059,
5089
         e_sf60 = 1060, e_sf61 = 1061, e_sf62 = 1062, e_sf63 = 1063,
5090
         e_sf64 = 1064, e_sf65 = 1065, e_sf66 = 1066, e_sf67 = 1067,
5091
         e_sf68 = 1068, e_sf69 = 1069, e_sf70 = 1070, e_sf71 = 1071,
5092
         e_sf72 = 1072, e_sf73 = 1073, e_sf74 = 1074, e_sf75 = 1075,
5093
         e_sf76 = 1076, e_sf77 = 1077, e_sf78 = 1078, e_sf79 = 1079,
5094
         e_sf80 = 1080, e_sf81 = 1081, e_sf82 = 1082, e_sf83 = 1083,
5095
         e_sf84 = 1084, e_sf85 = 1085, e_sf86 = 1086, e_sf87 = 1087,
5096
         e_sf88 = 1088, e_sf89 = 1089, e_sf90 = 1090, e_sf91 = 1091,
5097
         e_sf92 = 1092, e_sf93 = 1093, e_sf94 = 1094, e_sf95 = 1095,
5098
         e_sf96 = 1096, e_sf97 = 1097, e_sf98 = 1098, e_sf99 = 1099,
5099
         e_sffinal  = 1100,
5100
         e_sf4ext00 = 2000, e_sf4ext01 = 2001, e_sf4ext02 = 2002, e_sf4ext03 = 2003,
5101
         e_sf4ext04 = 2004, e_sf4ext05 = 2005, e_sf4ext06 = 2006, e_sf4ext07 = 2007,
5102
         e_sf4ext08 = 2008, e_sf4ext09 = 2009, e_sf4ext10 = 2010, e_sf4ext11 = 2011,
5103
         e_sf4ext12 = 2012, e_sf4ext13 = 2013, e_sf4ext14 = 2014, e_sf4ext15 = 2015,
5104
         e_sf4ext16 = 2016, e_sf4ext17 = 2017, e_sf4ext18 = 2018, e_sf4ext19 = 2019,
5105
         e_sf4ext20 = 2020, e_sf4ext21 = 2021, e_sf4ext22 = 2022, e_sf4ext23 = 2023,
5106
         e_sf4ext24 = 2024, e_sf4ext25 = 2025, e_sf4ext26 = 2026, e_sf4ext27 = 2027,
5107
         e_sf4ext28 = 2028, e_sf4ext29 = 2029, e_sf4ext30 = 2030, e_sf4ext31 = 2031,
5108
         e_sf4ext32 = 2032, e_sf4ext33 = 2033, e_sf4ext34 = 2034, e_sf4ext35 = 2035,
5109
         e_sf4ext36 = 2036, e_sf4ext37 = 2037, e_sf4ext38 = 2038, e_sf4ext39 = 2039,
5110
         e_sf4ext40 = 2040, e_sf4ext41 = 2041, e_sf4ext42 = 2042, e_sf4ext43 = 2043,
5111
         e_sf4ext44 = 2044, e_sf4ext45 = 2045, e_sf4ext46 = 2046, e_sf4ext47 = 2047,
5112
         e_sf4ext48 = 2048, e_sf4ext49 = 2049, e_sf4ext50 = 2050, e_sf4ext51 = 2051,
5113
         e_sf4ext52 = 2052, e_sf4ext53 = 2053, e_sf4ext54 = 2054, e_sf4ext55 = 2055,
5114
         e_sf4ext56 = 2056, e_sf4ext57 = 2057, e_sf4ext58 = 2058, e_sf4ext59 = 2059,
5115
         e_sf4ext60 = 2060, e_sf4ext61 = 2061
5116
      };
5117
5118
      inline std::string to_str(const operator_type opr)
5119
110
      {
5120
110
         switch (opr)
5121
110
         {
5122
2
            case e_add    : return  "+"  ;
5123
2
            case e_sub    : return  "-"  ;
5124
4
            case e_mul    : return  "*"  ;
5125
4
            case e_div    : return  "/"  ;
5126
4
            case e_mod    : return  "%"  ;
5127
2
            case e_pow    : return  "^"  ;
5128
10
            case e_assign : return ":="  ;
5129
14
            case e_addass : return "+="  ;
5130
22
            case e_subass : return "-="  ;
5131
2
            case e_mulass : return "*="  ;
5132
12
            case e_divass : return "/="  ;
5133
18
            case e_modass : return "%="  ;
5134
6
            case e_lt     : return  "<"  ;
5135
0
            case e_lte    : return "<="  ;
5136
4
            case e_eq     : return "=="  ;
5137
0
            case e_equal  : return  "="  ;
5138
0
            case e_ne     : return "!="  ;
5139
0
            case e_nequal : return "<>"  ;
5140
0
            case e_gte    : return ">="  ;
5141
2
            case e_gt     : return  ">"  ;
5142
0
            case e_and    : return "and" ;
5143
0
            case e_or     : return "or"  ;
5144
0
            case e_xor    : return "xor" ;
5145
0
            case e_nand   : return "nand";
5146
0
            case e_nor    : return "nor" ;
5147
0
            case e_xnor   : return "xnor";
5148
2
            default       : return "N/A" ;
5149
110
         }
5150
110
      }
5151
5152
      struct base_operation_t
5153
      {
5154
         base_operation_t(const operator_type t, const unsigned int& np)
5155
667k
         : type(t)
5156
667k
         , num_params(np)
5157
667k
         {}
5158
5159
         operator_type type;
5160
         unsigned int num_params;
5161
      };
5162
5163
      namespace loop_unroll
5164
      {
5165
         const unsigned int global_loop_batch_size =
5166
         #ifndef exprtk_disable_superscalar_unroll
5167
         16;
5168
         #else
5169
          4;
5170
         #endif
5171
5172
         struct details
5173
         {
5174
            explicit details(const std::size_t& vsize,
5175
                             const unsigned int loop_batch_size = global_loop_batch_size)
5176
10
            : batch_size(loop_batch_size   )
5177
10
            , remainder (vsize % batch_size)
5178
10
            , upper_bound(static_cast<int>(vsize - (remainder ? loop_batch_size : 0)))
5179
10
            {}
5180
5181
            unsigned int batch_size;
5182
            int remainder;
5183
            int upper_bound;
5184
         };
5185
      }
5186
5187
      #ifdef exprtk_enable_debugging
5188
      inline void dump_ptr(const std::string& s, const void* ptr, const std::size_t size = 0)
5189
      {
5190
         if (size)
5191
            exprtk_debug(("%s - addr: %p size: %d\n",
5192
                          s.c_str(),
5193
                          ptr,
5194
                          static_cast<unsigned int>(size)));
5195
         else
5196
            exprtk_debug(("%s - addr: %p\n", s.c_str(), ptr));
5197
      }
5198
5199
      template <typename T>
5200
      inline void dump_vector(const std::string& vec_name, const T* data, const std::size_t size)
5201
      {
5202
         printf("----- %s (%p) -----\n",
5203
                vec_name.c_str(),
5204
                static_cast<const void*>(data));
5205
         printf("[ ");
5206
         for (std::size_t i = 0; i <  size; ++i)
5207
         {
5208
            printf("%8.3f\t", data[i]);
5209
         }
5210
         printf(" ]\n");
5211
         printf("---------------------\n");
5212
      }
5213
      #else
5214
35.5k
      inline void dump_ptr(const std::string&, const void*) {}
5215
0
      inline void dump_ptr(const std::string&, const void*, const std::size_t) {}
5216
      template <typename T>
5217
      inline void dump_vector(const std::string&, const T*, const std::size_t) {}
5218
      #endif
5219
5220
      template <typename T>
5221
      class vec_data_store
5222
      {
5223
      public:
5224
5225
         typedef vec_data_store<T> type;
5226
         typedef T* data_t;
5227
5228
      private:
5229
5230
         struct control_block
5231
         {
5232
            control_block()
5233
0
            : ref_count(1)
5234
0
            , size     (0)
5235
0
            , data     (0)
5236
0
            , destruct (true)
5237
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()
5238
5239
            explicit control_block(const std::size_t& dsize)
5240
0
            : ref_count(1    )
5241
0
            , size     (dsize)
5242
0
            , data     (0    )
5243
0
            , destruct (true )
5244
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&)
5245
5246
            control_block(const std::size_t& dsize, data_t dptr, bool dstrct = false)
5247
0
            : ref_count(1     )
5248
0
            , size     (dsize )
5249
0
            , data     (dptr  )
5250
0
            , destruct (dstrct)
5251
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)
5252
5253
           ~control_block()
5254
0
            {
5255
0
               if (data && destruct && (0 == ref_count))
5256
0
               {
5257
0
                  dump_ptr("~vec_data_store::control_block() data",data);
5258
0
                  delete[] data;
5259
0
                  data = reinterpret_cast<data_t>(0);
5260
0
               }
5261
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()
5262
5263
            static inline control_block* create(const std::size_t& dsize, data_t data_ptr = data_t(0), bool dstrct = false)
5264
0
            {
5265
0
               if (dsize)
5266
0
               {
5267
0
                  if (0 == data_ptr)
5268
0
                     return (new control_block(dsize));
5269
0
                  else
5270
0
                     return (new control_block(dsize, data_ptr, dstrct));
5271
0
               }
5272
0
               else
5273
0
                  return (new control_block);
5274
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)
5275
5276
            static inline void destroy(control_block*& cntrl_blck)
5277
0
            {
5278
0
               if (cntrl_blck)
5279
0
               {
5280
0
                  if (
5281
0
                       (0 !=   cntrl_blck->ref_count) &&
5282
0
                       (0 == --cntrl_blck->ref_count)
5283
0
                     )
5284
0
                  {
5285
0
                     delete cntrl_blck;
5286
0
                  }
5287
5288
0
                  cntrl_blck = 0;
5289
0
               }
5290
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*&)
5291
5292
            std::size_t ref_count;
5293
            std::size_t size;
5294
            data_t      data;
5295
            bool        destruct;
5296
5297
         private:
5298
5299
            control_block(const control_block&) exprtk_delete;
5300
            control_block& operator=(const control_block&) exprtk_delete;
5301
5302
            inline void create_data()
5303
0
            {
5304
0
               destruct = true;
5305
0
               data     = new T[size];
5306
0
               std::fill_n(data, size, T(0));
5307
0
               dump_ptr("control_block::create_data() - data", data, size);
5308
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()
5309
         };
5310
5311
      public:
5312
5313
         vec_data_store()
5314
0
         : control_block_(control_block::create(0))
5315
0
         {}
Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store()
5316
5317
         explicit vec_data_store(const std::size_t& size)
5318
0
         : control_block_(control_block::create(size,reinterpret_cast<data_t>(0),true))
5319
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&)
5320
5321
         vec_data_store(const std::size_t& size, data_t data, bool dstrct = false)
5322
0
         : control_block_(control_block::create(size, data, dstrct))
5323
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)
5324
5325
         vec_data_store(const type& vds)
5326
0
         {
5327
0
            control_block_ = vds.control_block_;
5328
0
            control_block_->ref_count++;
5329
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&)
5330
5331
        ~vec_data_store()
5332
0
         {
5333
0
            control_block::destroy(control_block_);
5334
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::~vec_data_store()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::~vec_data_store()
5335
5336
         type& operator=(const type& vds)
5337
0
         {
5338
0
            if (this != &vds)
5339
0
            {
5340
0
               const std::size_t final_size = min_size(control_block_, vds.control_block_);
5341
5342
0
               vds.control_block_->size = final_size;
5343
0
                   control_block_->size = final_size;
5344
5345
0
               if (control_block_->destruct || (0 == control_block_->data))
5346
0
               {
5347
0
                  control_block::destroy(control_block_);
5348
5349
0
                  control_block_ = vds.control_block_;
5350
0
                  control_block_->ref_count++;
5351
0
               }
5352
0
            }
5353
5354
0
            return (*this);
5355
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&)
5356
5357
         inline data_t data()
5358
0
         {
5359
0
            return control_block_->data;
5360
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::data()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::data()
5361
5362
         inline data_t data() const
5363
0
         {
5364
0
            return control_block_->data;
5365
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::data() const
Unexecuted instantiation: exprtk::details::vec_data_store<float>::data() const
5366
5367
         inline std::size_t size() const
5368
0
         {
5369
0
            return control_block_->size;
5370
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::size() const
Unexecuted instantiation: exprtk::details::vec_data_store<float>::size() const
5371
5372
         inline data_t& ref()
5373
0
         {
5374
0
            return control_block_->data;
5375
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::ref()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::ref()
5376
5377
         inline void dump() const
5378
         {
5379
            #ifdef exprtk_enable_debugging
5380
            exprtk_debug(("size: %d\taddress:%p\tdestruct:%c\n",
5381
                          size(),
5382
                          data(),
5383
                          (control_block_->destruct ? 'T' : 'F')));
5384
5385
            for (std::size_t i = 0; i < size(); ++i)
5386
            {
5387
               if (5 == i)
5388
                  exprtk_debug(("\n"));
5389
5390
               exprtk_debug(("%15.10f ", data()[i]));
5391
            }
5392
            exprtk_debug(("\n"));
5393
            #endif
5394
         }
5395
5396
         static inline void match_sizes(type& vds0, type& vds1)
5397
0
         {
5398
0
            const std::size_t size = min_size(vds0.control_block_,vds1.control_block_);
5399
0
            vds0.control_block_->size = size;
5400
0
            vds1.control_block_->size = size;
5401
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>&)
5402
5403
      private:
5404
5405
         static inline std::size_t min_size(const control_block* cb0, const control_block* cb1)
5406
0
         {
5407
0
            const std::size_t size0 = cb0->size;
5408
0
            const std::size_t size1 = cb1->size;
5409
5410
0
            if (size0 && size1)
5411
0
               return std::min(size0,size1);
5412
0
            else
5413
0
               return (size0) ? size0 : size1;
5414
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*)
5415
5416
         control_block* control_block_;
5417
      };
5418
5419
      namespace numeric
5420
      {
5421
         namespace details
5422
         {
5423
            template <typename T>
5424
            inline T process_impl(const operator_type operation, const T arg)
5425
53.2k
            {
5426
53.2k
               switch (operation)
5427
53.2k
               {
5428
0
                  case e_abs   : return numeric::abs  (arg);
5429
2
                  case e_acos  : return numeric::acos (arg);
5430
0
                  case e_acosh : return numeric::acosh(arg);
5431
0
                  case e_asin  : return numeric::asin (arg);
5432
0
                  case e_asinh : return numeric::asinh(arg);
5433
0
                  case e_atan  : return numeric::atan (arg);
5434
0
                  case e_atanh : return numeric::atanh(arg);
5435
0
                  case e_ceil  : return numeric::ceil (arg);
5436
0
                  case e_cos   : return numeric::cos  (arg);
5437
0
                  case e_cosh  : return numeric::cosh (arg);
5438
0
                  case e_exp   : return numeric::exp  (arg);
5439
0
                  case e_expm1 : return numeric::expm1(arg);
5440
0
                  case e_floor : return numeric::floor(arg);
5441
0
                  case e_log   : return numeric::log  (arg);
5442
0
                  case e_log10 : return numeric::log10(arg);
5443
0
                  case e_log2  : return numeric::log2 (arg);
5444
0
                  case e_log1p : return numeric::log1p(arg);
5445
53.2k
                  case e_neg   : return numeric::neg  (arg);
5446
0
                  case e_pos   : return numeric::pos  (arg);
5447
0
                  case e_round : return numeric::round(arg);
5448
0
                  case e_sin   : return numeric::sin  (arg);
5449
0
                  case e_sinc  : return numeric::sinc (arg);
5450
0
                  case e_sinh  : return numeric::sinh (arg);
5451
0
                  case e_sqrt  : return numeric::sqrt (arg);
5452
0
                  case e_tan   : return numeric::tan  (arg);
5453
0
                  case e_tanh  : return numeric::tanh (arg);
5454
0
                  case e_cot   : return numeric::cot  (arg);
5455
0
                  case e_sec   : return numeric::sec  (arg);
5456
0
                  case e_csc   : return numeric::csc  (arg);
5457
0
                  case e_r2d   : return numeric::r2d  (arg);
5458
0
                  case e_d2r   : return numeric::d2r  (arg);
5459
0
                  case e_d2g   : return numeric::d2g  (arg);
5460
0
                  case e_g2d   : return numeric::g2d  (arg);
5461
0
                  case e_notl  : return numeric::notl (arg);
5462
0
                  case e_sgn   : return numeric::sgn  (arg);
5463
0
                  case e_erf   : return numeric::erf  (arg);
5464
0
                  case e_erfc  : return numeric::erfc (arg);
5465
0
                  case e_ncdf  : return numeric::ncdf (arg);
5466
0
                  case e_frac  : return numeric::frac (arg);
5467
0
                  case e_trunc : return numeric::trunc(arg);
5468
5469
0
                  default      : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n"));
5470
0
                                 return std::numeric_limits<T>::quiet_NaN();
5471
53.2k
               }
5472
53.2k
            }
double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double)
Line
Count
Source
5425
30.8k
            {
5426
30.8k
               switch (operation)
5427
30.8k
               {
5428
0
                  case e_abs   : return numeric::abs  (arg);
5429
1
                  case e_acos  : return numeric::acos (arg);
5430
0
                  case e_acosh : return numeric::acosh(arg);
5431
0
                  case e_asin  : return numeric::asin (arg);
5432
0
                  case e_asinh : return numeric::asinh(arg);
5433
0
                  case e_atan  : return numeric::atan (arg);
5434
0
                  case e_atanh : return numeric::atanh(arg);
5435
0
                  case e_ceil  : return numeric::ceil (arg);
5436
0
                  case e_cos   : return numeric::cos  (arg);
5437
0
                  case e_cosh  : return numeric::cosh (arg);
5438
0
                  case e_exp   : return numeric::exp  (arg);
5439
0
                  case e_expm1 : return numeric::expm1(arg);
5440
0
                  case e_floor : return numeric::floor(arg);
5441
0
                  case e_log   : return numeric::log  (arg);
5442
0
                  case e_log10 : return numeric::log10(arg);
5443
0
                  case e_log2  : return numeric::log2 (arg);
5444
0
                  case e_log1p : return numeric::log1p(arg);
5445
30.8k
                  case e_neg   : return numeric::neg  (arg);
5446
0
                  case e_pos   : return numeric::pos  (arg);
5447
0
                  case e_round : return numeric::round(arg);
5448
0
                  case e_sin   : return numeric::sin  (arg);
5449
0
                  case e_sinc  : return numeric::sinc (arg);
5450
0
                  case e_sinh  : return numeric::sinh (arg);
5451
0
                  case e_sqrt  : return numeric::sqrt (arg);
5452
0
                  case e_tan   : return numeric::tan  (arg);
5453
0
                  case e_tanh  : return numeric::tanh (arg);
5454
0
                  case e_cot   : return numeric::cot  (arg);
5455
0
                  case e_sec   : return numeric::sec  (arg);
5456
0
                  case e_csc   : return numeric::csc  (arg);
5457
0
                  case e_r2d   : return numeric::r2d  (arg);
5458
0
                  case e_d2r   : return numeric::d2r  (arg);
5459
0
                  case e_d2g   : return numeric::d2g  (arg);
5460
0
                  case e_g2d   : return numeric::g2d  (arg);
5461
0
                  case e_notl  : return numeric::notl (arg);
5462
0
                  case e_sgn   : return numeric::sgn  (arg);
5463
0
                  case e_erf   : return numeric::erf  (arg);
5464
0
                  case e_erfc  : return numeric::erfc (arg);
5465
0
                  case e_ncdf  : return numeric::ncdf (arg);
5466
0
                  case e_frac  : return numeric::frac (arg);
5467
0
                  case e_trunc : return numeric::trunc(arg);
5468
5469
0
                  default      : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n"));
5470
0
                                 return std::numeric_limits<T>::quiet_NaN();
5471
30.8k
               }
5472
30.8k
            }
float exprtk::details::numeric::details::process_impl<float>(exprtk::details::operator_type, float)
Line
Count
Source
5425
22.4k
            {
5426
22.4k
               switch (operation)
5427
22.4k
               {
5428
0
                  case e_abs   : return numeric::abs  (arg);
5429
1
                  case e_acos  : return numeric::acos (arg);
5430
0
                  case e_acosh : return numeric::acosh(arg);
5431
0
                  case e_asin  : return numeric::asin (arg);
5432
0
                  case e_asinh : return numeric::asinh(arg);
5433
0
                  case e_atan  : return numeric::atan (arg);
5434
0
                  case e_atanh : return numeric::atanh(arg);
5435
0
                  case e_ceil  : return numeric::ceil (arg);
5436
0
                  case e_cos   : return numeric::cos  (arg);
5437
0
                  case e_cosh  : return numeric::cosh (arg);
5438
0
                  case e_exp   : return numeric::exp  (arg);
5439
0
                  case e_expm1 : return numeric::expm1(arg);
5440
0
                  case e_floor : return numeric::floor(arg);
5441
0
                  case e_log   : return numeric::log  (arg);
5442
0
                  case e_log10 : return numeric::log10(arg);
5443
0
                  case e_log2  : return numeric::log2 (arg);
5444
0
                  case e_log1p : return numeric::log1p(arg);
5445
22.4k
                  case e_neg   : return numeric::neg  (arg);
5446
0
                  case e_pos   : return numeric::pos  (arg);
5447
0
                  case e_round : return numeric::round(arg);
5448
0
                  case e_sin   : return numeric::sin  (arg);
5449
0
                  case e_sinc  : return numeric::sinc (arg);
5450
0
                  case e_sinh  : return numeric::sinh (arg);
5451
0
                  case e_sqrt  : return numeric::sqrt (arg);
5452
0
                  case e_tan   : return numeric::tan  (arg);
5453
0
                  case e_tanh  : return numeric::tanh (arg);
5454
0
                  case e_cot   : return numeric::cot  (arg);
5455
0
                  case e_sec   : return numeric::sec  (arg);
5456
0
                  case e_csc   : return numeric::csc  (arg);
5457
0
                  case e_r2d   : return numeric::r2d  (arg);
5458
0
                  case e_d2r   : return numeric::d2r  (arg);
5459
0
                  case e_d2g   : return numeric::d2g  (arg);
5460
0
                  case e_g2d   : return numeric::g2d  (arg);
5461
0
                  case e_notl  : return numeric::notl (arg);
5462
0
                  case e_sgn   : return numeric::sgn  (arg);
5463
0
                  case e_erf   : return numeric::erf  (arg);
5464
0
                  case e_erfc  : return numeric::erfc (arg);
5465
0
                  case e_ncdf  : return numeric::ncdf (arg);
5466
0
                  case e_frac  : return numeric::frac (arg);
5467
0
                  case e_trunc : return numeric::trunc(arg);
5468
5469
0
                  default      : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n"));
5470
0
                                 return std::numeric_limits<T>::quiet_NaN();
5471
22.4k
               }
5472
22.4k
            }
5473
5474
            template <typename T>
5475
            inline T process_impl(const operator_type operation, const T arg0, const T arg1)
5476
8.36k
            {
5477
8.36k
               switch (operation)
5478
8.36k
               {
5479
1.14k
                  case e_add    : return (arg0 + arg1);
5480
225
                  case e_sub    : return (arg0 - arg1);
5481
191
                  case e_mul    : return (arg0 * arg1);
5482
365
                  case e_div    : return (arg0 / arg1);
5483
5.13k
                  case e_mod    : return modulus<T>(arg0,arg1);
5484
1.07k
                  case e_pow    : return pow<T>(arg0,arg1);
5485
0
                  case e_atan2  : return atan2<T>(arg0,arg1);
5486
0
                  case e_min    : return std::min<T>(arg0,arg1);
5487
0
                  case e_max    : return std::max<T>(arg0,arg1);
5488
0
                  case e_logn   : return logn<T>(arg0,arg1);
5489
92
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
5490
7
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
5491
36
                  case e_eq     : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5492
4
                  case e_ne     : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5493
9
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
5494
50
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
5495
22
                  case e_and    : return and_opr <T>(arg0,arg1);
5496
9
                  case e_nand   : return nand_opr<T>(arg0,arg1);
5497
4
                  case e_or     : return or_opr  <T>(arg0,arg1);
5498
0
                  case e_nor    : return nor_opr <T>(arg0,arg1);
5499
0
                  case e_xor    : return xor_opr <T>(arg0,arg1);
5500
2
                  case e_xnor   : return xnor_opr<T>(arg0,arg1);
5501
0
                  case e_root   : return root    <T>(arg0,arg1);
5502
0
                  case e_roundn : return roundn  <T>(arg0,arg1);
5503
0
                  case e_equal  : return equal   <T>(arg0,arg1);
5504
0
                  case e_nequal : return nequal  <T>(arg0,arg1);
5505
0
                  case e_hypot  : return hypot   <T>(arg0,arg1);
5506
0
                  case e_shr    : return shr     <T>(arg0,arg1);
5507
0
                  case e_shl    : return shl     <T>(arg0,arg1);
5508
5509
0
                  default       : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n"));
5510
0
                                  return std::numeric_limits<T>::quiet_NaN();
5511
8.36k
               }
5512
8.36k
            }
double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double, double)
Line
Count
Source
5476
6.85k
            {
5477
6.85k
               switch (operation)
5478
6.85k
               {
5479
575
                  case e_add    : return (arg0 + arg1);
5480
115
                  case e_sub    : return (arg0 - arg1);
5481
120
                  case e_mul    : return (arg0 * arg1);
5482
251
                  case e_div    : return (arg0 / arg1);
5483
5.11k
                  case e_mod    : return modulus<T>(arg0,arg1);
5484
565
                  case e_pow    : return pow<T>(arg0,arg1);
5485
0
                  case e_atan2  : return atan2<T>(arg0,arg1);
5486
0
                  case e_min    : return std::min<T>(arg0,arg1);
5487
0
                  case e_max    : return std::max<T>(arg0,arg1);
5488
0
                  case e_logn   : return logn<T>(arg0,arg1);
5489
46
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
5490
4
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
5491
18
                  case e_eq     : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5492
2
                  case e_ne     : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5493
6
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
5494
25
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
5495
11
                  case e_and    : return and_opr <T>(arg0,arg1);
5496
5
                  case e_nand   : return nand_opr<T>(arg0,arg1);
5497
2
                  case e_or     : return or_opr  <T>(arg0,arg1);
5498
0
                  case e_nor    : return nor_opr <T>(arg0,arg1);
5499
0
                  case e_xor    : return xor_opr <T>(arg0,arg1);
5500
1
                  case e_xnor   : return xnor_opr<T>(arg0,arg1);
5501
0
                  case e_root   : return root    <T>(arg0,arg1);
5502
0
                  case e_roundn : return roundn  <T>(arg0,arg1);
5503
0
                  case e_equal  : return equal   <T>(arg0,arg1);
5504
0
                  case e_nequal : return nequal  <T>(arg0,arg1);
5505
0
                  case e_hypot  : return hypot   <T>(arg0,arg1);
5506
0
                  case e_shr    : return shr     <T>(arg0,arg1);
5507
0
                  case e_shl    : return shl     <T>(arg0,arg1);
5508
5509
0
                  default       : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n"));
5510
0
                                  return std::numeric_limits<T>::quiet_NaN();
5511
6.85k
               }
5512
6.85k
            }
float exprtk::details::numeric::details::process_impl<float>(exprtk::details::operator_type, float, float)
Line
Count
Source
5476
1.50k
            {
5477
1.50k
               switch (operation)
5478
1.50k
               {
5479
567
                  case e_add    : return (arg0 + arg1);
5480
110
                  case e_sub    : return (arg0 - arg1);
5481
71
                  case e_mul    : return (arg0 * arg1);
5482
114
                  case e_div    : return (arg0 / arg1);
5483
20
                  case e_mod    : return modulus<T>(arg0,arg1);
5484
505
                  case e_pow    : return pow<T>(arg0,arg1);
5485
0
                  case e_atan2  : return atan2<T>(arg0,arg1);
5486
0
                  case e_min    : return std::min<T>(arg0,arg1);
5487
0
                  case e_max    : return std::max<T>(arg0,arg1);
5488
0
                  case e_logn   : return logn<T>(arg0,arg1);
5489
46
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
5490
3
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
5491
18
                  case e_eq     : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5492
2
                  case e_ne     : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5493
3
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
5494
25
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
5495
11
                  case e_and    : return and_opr <T>(arg0,arg1);
5496
4
                  case e_nand   : return nand_opr<T>(arg0,arg1);
5497
2
                  case e_or     : return or_opr  <T>(arg0,arg1);
5498
0
                  case e_nor    : return nor_opr <T>(arg0,arg1);
5499
0
                  case e_xor    : return xor_opr <T>(arg0,arg1);
5500
1
                  case e_xnor   : return xnor_opr<T>(arg0,arg1);
5501
0
                  case e_root   : return root    <T>(arg0,arg1);
5502
0
                  case e_roundn : return roundn  <T>(arg0,arg1);
5503
0
                  case e_equal  : return equal   <T>(arg0,arg1);
5504
0
                  case e_nequal : return nequal  <T>(arg0,arg1);
5505
0
                  case e_hypot  : return hypot   <T>(arg0,arg1);
5506
0
                  case e_shr    : return shr     <T>(arg0,arg1);
5507
0
                  case e_shl    : return shl     <T>(arg0,arg1);
5508
5509
0
                  default       : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n"));
5510
0
                                  return std::numeric_limits<T>::quiet_NaN();
5511
1.50k
               }
5512
1.50k
            }
5513
5514
            template <typename T>
5515
            inline T process_impl(const operator_type operation, const T arg0, const T arg1, int_type_tag)
5516
            {
5517
               switch (operation)
5518
               {
5519
                  case e_add    : return (arg0 + arg1);
5520
                  case e_sub    : return (arg0 - arg1);
5521
                  case e_mul    : return (arg0 * arg1);
5522
                  case e_div    : return (arg0 / arg1);
5523
                  case e_mod    : return arg0 % arg1;
5524
                  case e_pow    : return pow<T>(arg0,arg1);
5525
                  case e_min    : return std::min<T>(arg0,arg1);
5526
                  case e_max    : return std::max<T>(arg0,arg1);
5527
                  case e_logn   : return logn<T>(arg0,arg1);
5528
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
5529
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
5530
                  case e_eq     : return (arg0 == arg1) ? T(1) : T(0);
5531
                  case e_ne     : return (arg0 != arg1) ? T(1) : T(0);
5532
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
5533
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
5534
                  case e_and    : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(1) : T(0);
5535
                  case e_nand   : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(0) : T(1);
5536
                  case e_or     : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(1) : T(0);
5537
                  case e_nor    : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(0) : T(1);
5538
                  case e_xor    : return arg0 ^ arg1;
5539
                  case e_xnor   : return !(arg0 ^ arg1);
5540
                  case e_root   : return root<T>(arg0,arg1);
5541
                  case e_equal  : return arg0 == arg1;
5542
                  case e_nequal : return arg0 != arg1;
5543
                  case e_hypot  : return hypot<T>(arg0,arg1);
5544
                  case e_shr    : return arg0 >> arg1;
5545
                  case e_shl    : return arg0 << arg1;
5546
5547
                  default       : exprtk_debug(("numeric::details::process_impl<IntType> - Invalid binary operation.\n"));
5548
                                  return std::numeric_limits<T>::quiet_NaN();
5549
               }
5550
            }
5551
         }
5552
5553
         template <typename T>
5554
         inline T process(const operator_type operation, const T arg)
5555
53.2k
         {
5556
53.2k
            return exprtk::details::numeric::details::process_impl(operation,arg);
5557
53.2k
         }
double exprtk::details::numeric::process<double>(exprtk::details::operator_type, double)
Line
Count
Source
5555
30.8k
         {
5556
30.8k
            return exprtk::details::numeric::details::process_impl(operation,arg);
5557
30.8k
         }
float exprtk::details::numeric::process<float>(exprtk::details::operator_type, float)
Line
Count
Source
5555
22.4k
         {
5556
22.4k
            return exprtk::details::numeric::details::process_impl(operation,arg);
5557
22.4k
         }
5558
5559
         template <typename T>
5560
         inline T process(const operator_type operation, const T arg0, const T arg1)
5561
8.36k
         {
5562
8.36k
            return exprtk::details::numeric::details::process_impl(operation, arg0, arg1);
5563
8.36k
         }
double exprtk::details::numeric::process<double>(exprtk::details::operator_type, double, double)
Line
Count
Source
5561
6.85k
         {
5562
6.85k
            return exprtk::details::numeric::details::process_impl(operation, arg0, arg1);
5563
6.85k
         }
float exprtk::details::numeric::process<float>(exprtk::details::operator_type, float, float)
Line
Count
Source
5561
1.50k
         {
5562
1.50k
            return exprtk::details::numeric::details::process_impl(operation, arg0, arg1);
5563
1.50k
         }
5564
      }
5565
5566
      template <typename Node>
5567
      struct node_collector_interface
5568
      {
5569
         typedef Node* node_ptr_t;
5570
         typedef Node** node_pp_t;
5571
         typedef std::vector<node_pp_t> noderef_list_t;
5572
5573
         virtual ~node_collector_interface()
5574
587k
         {}
exprtk::details::node_collector_interface<exprtk::details::expression_node<double> >::~node_collector_interface()
Line
Count
Source
5574
372k
         {}
exprtk::details::node_collector_interface<exprtk::details::expression_node<float> >::~node_collector_interface()
Line
Count
Source
5574
214k
         {}
5575
5576
         virtual void collect_nodes(noderef_list_t&)
5577
316k
         {}
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
5577
206k
         {}
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
5577
109k
         {}
5578
      };
5579
5580
      template <typename Node>
5581
      struct node_depth_base;
5582
5583
      template <typename T>
5584
      class expression_node : public node_collector_interface<expression_node<T> >
5585
                            , public node_depth_base<expression_node<T> >
5586
      {
5587
      public:
5588
5589
         enum node_type
5590
         {
5591
            e_none          , e_null          , e_constant    , e_unary        ,
5592
            e_binary        , e_binary_ext    , e_trinary     , e_quaternary   ,
5593
            e_vararg        , e_conditional   , e_while       , e_repeat       ,
5594
            e_for           , e_switch        , e_mswitch     , e_return       ,
5595
            e_retenv        , e_variable      , e_stringvar   , e_stringconst  ,
5596
            e_stringvarrng  , e_cstringvarrng , e_strgenrange , e_strconcat    ,
5597
            e_stringvarsize , e_strswap       , e_stringsize  , e_stringvararg ,
5598
            e_function      , e_vafunction    , e_genfunction , e_strfunction  ,
5599
            e_strcondition  , e_strccondition , e_add         , e_sub          ,
5600
            e_mul           , e_div           , e_mod         , e_pow          ,
5601
            e_lt            , e_lte           , e_gt          , e_gte          ,
5602
            e_eq            , e_ne            , e_and         , e_nand         ,
5603
            e_or            , e_nor           , e_xor         , e_xnor         ,
5604
            e_in            , e_like          , e_ilike       , e_inranges     ,
5605
            e_ipow          , e_ipowinv       , e_abs         , e_acos         ,
5606
            e_acosh         , e_asin          , e_asinh       , e_atan         ,
5607
            e_atanh         , e_ceil          , e_cos         , e_cosh         ,
5608
            e_exp           , e_expm1         , e_floor       , e_log          ,
5609
            e_log10         , e_log2          , e_log1p       , e_neg          ,
5610
            e_pos           , e_round         , e_sin         , e_sinc         ,
5611
            e_sinh          , e_sqrt          , e_tan         , e_tanh         ,
5612
            e_cot           , e_sec           , e_csc         , e_r2d          ,
5613
            e_d2r           , e_d2g           , e_g2d         , e_notl         ,
5614
            e_sgn           , e_erf           , e_erfc        , e_ncdf         ,
5615
            e_frac          , e_trunc         , e_uvouv       , e_vov          ,
5616
            e_cov           , e_voc           , e_vob         , e_bov          ,
5617
            e_cob           , e_boc           , e_vovov       , e_vovoc        ,
5618
            e_vocov         , e_covov         , e_covoc       , e_vovovov      ,
5619
            e_vovovoc       , e_vovocov       , e_vocovov     , e_covovov      ,
5620
            e_covocov       , e_vocovoc       , e_covovoc     , e_vococov      ,
5621
            e_sf3ext        , e_sf4ext        , e_nulleq      , e_strass       ,
5622
            e_vector        , e_vecsize       , e_vecelem     , e_veccelem     ,
5623
            e_vecelemrtc    , e_veccelemrtc   , e_rbvecelem   , e_rbvecelemrtc ,
5624
            e_rbveccelem    , e_rbveccelemrtc , e_vecinit     , e_vecvalass    ,
5625
            e_vecvecass     , e_vecopvalass   , e_vecopvecass , e_vecfunc      ,
5626
            e_vecvecswap    , e_vecvecineq    , e_vecvalineq  , e_valvecineq   ,
5627
            e_vecvecarith   , e_vecvalarith   , e_valvecarith , e_vecunaryop   ,
5628
            e_vecondition   , e_break         , e_continue    , e_swap         ,
5629
            e_assert
5630
         };
5631
5632
         typedef T value_type;
5633
         typedef expression_node<T>* expression_ptr;
5634
         typedef node_collector_interface<expression_node<T> > nci_t;
5635
         typedef typename nci_t::noderef_list_t noderef_list_t;
5636
         typedef node_depth_base<expression_node<T> > ndb_t;
5637
5638
         virtual ~expression_node()
5639
587k
         {}
exprtk::details::expression_node<double>::~expression_node()
Line
Count
Source
5639
372k
         {}
exprtk::details::expression_node<float>::~expression_node()
Line
Count
Source
5639
214k
         {}
5640
5641
         inline virtual T value() const
5642
0
         {
5643
0
            return std::numeric_limits<T>::quiet_NaN();
5644
0
         }
Unexecuted instantiation: exprtk::details::expression_node<double>::value() const
Unexecuted instantiation: exprtk::details::expression_node<float>::value() const
5645
5646
         inline virtual expression_node<T>* branch(const std::size_t& index = 0) const
5647
0
         {
5648
0
            return reinterpret_cast<expression_ptr>(index * 0);
5649
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
5650
5651
         inline virtual node_type type() const
5652
1.35M
         {
5653
1.35M
            return e_none;
5654
1.35M
         }
exprtk::details::expression_node<double>::type() const
Line
Count
Source
5652
1.10M
         {
5653
1.10M
            return e_none;
5654
1.10M
         }
exprtk::details::expression_node<float>::type() const
Line
Count
Source
5652
252k
         {
5653
252k
            return e_none;
5654
252k
         }
5655
5656
         inline virtual bool valid() const
5657
691M
         {
5658
691M
            return true;
5659
691M
         }
exprtk::details::expression_node<double>::valid() const
Line
Count
Source
5657
502M
         {
5658
502M
            return true;
5659
502M
         }
exprtk::details::expression_node<float>::valid() const
Line
Count
Source
5657
189M
         {
5658
189M
            return true;
5659
189M
         }
5660
      }; // class expression_node
5661
5662
      template <typename T>
5663
      inline bool is_generally_string_node(const expression_node<T>* node);
5664
5665
      inline bool is_true(const double v)
5666
211
      {
5667
211
         return std::not_equal_to<double>()(0.0,v);
5668
211
      }
5669
5670
      inline bool is_true(const long double v)
5671
0
      {
5672
0
         return std::not_equal_to<long double>()(0.0L,v);
5673
0
      }
5674
5675
      inline bool is_true(const float v)
5676
204
      {
5677
204
         return std::not_equal_to<float>()(0.0f,v);
5678
204
      }
5679
5680
      template <typename T>
5681
      inline bool is_true(const expression_node<T>* node)
5682
4
      {
5683
4
         return std::not_equal_to<T>()(T(0),node->value());
5684
4
      }
bool exprtk::details::is_true<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5682
2
      {
5683
2
         return std::not_equal_to<T>()(T(0),node->value());
5684
2
      }
bool exprtk::details::is_true<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5682
2
      {
5683
2
         return std::not_equal_to<T>()(T(0),node->value());
5684
2
      }
5685
5686
      template <typename T>
5687
      inline bool is_true(const std::pair<expression_node<T>*,bool>& node)
5688
34
      {
5689
34
         return std::not_equal_to<T>()(T(0),node.first->value());
5690
34
      }
bool exprtk::details::is_true<double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&)
Line
Count
Source
5688
17
      {
5689
17
         return std::not_equal_to<T>()(T(0),node.first->value());
5690
17
      }
bool exprtk::details::is_true<float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&)
Line
Count
Source
5688
17
      {
5689
17
         return std::not_equal_to<T>()(T(0),node.first->value());
5690
17
      }
5691
5692
      template <typename T>
5693
      inline bool is_false(const expression_node<T>* node)
5694
0
      {
5695
0
         return std::equal_to<T>()(T(0),node->value());
5696
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*)
5697
5698
      template <typename T>
5699
      inline bool is_false(const std::pair<expression_node<T>*,bool>& node)
5700
      {
5701
         return std::equal_to<T>()(T(0),node.first->value());
5702
      }
5703
5704
      template <typename T>
5705
      inline bool is_literal_node(const expression_node<T>* node)
5706
465
      {
5707
465
         return node && (details::expression_node<T>::e_constant == node->type());
5708
465
      }
bool exprtk::details::is_literal_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5706
237
      {
5707
237
         return node && (details::expression_node<T>::e_constant == node->type());
5708
237
      }
bool exprtk::details::is_literal_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5706
228
      {
5707
228
         return node && (details::expression_node<T>::e_constant == node->type());
5708
228
      }
5709
5710
      template <typename T>
5711
      inline bool is_unary_node(const expression_node<T>* node)
5712
      {
5713
         return node && (details::expression_node<T>::e_unary == node->type());
5714
      }
5715
5716
      template <typename T>
5717
      inline bool is_neg_unary_node(const expression_node<T>* node)
5718
203k
      {
5719
203k
         return node && (details::expression_node<T>::e_neg == node->type());
5720
203k
      }
bool exprtk::details::is_neg_unary_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5718
129k
      {
5719
129k
         return node && (details::expression_node<T>::e_neg == node->type());
5720
129k
      }
bool exprtk::details::is_neg_unary_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5718
74.2k
      {
5719
74.2k
         return node && (details::expression_node<T>::e_neg == node->type());
5720
74.2k
      }
5721
5722
      template <typename T>
5723
      inline bool is_binary_node(const expression_node<T>* node)
5724
      {
5725
         return node && (details::expression_node<T>::e_binary == node->type());
5726
      }
5727
5728
      template <typename T>
5729
      inline bool is_variable_node(const expression_node<T>* node)
5730
1.33M
      {
5731
1.33M
         return node && (details::expression_node<T>::e_variable == node->type());
5732
1.33M
      }
bool exprtk::details::is_variable_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5730
913k
      {
5731
913k
         return node && (details::expression_node<T>::e_variable == node->type());
5732
913k
      }
bool exprtk::details::is_variable_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5730
424k
      {
5731
424k
         return node && (details::expression_node<T>::e_variable == node->type());
5732
424k
      }
5733
5734
      template <typename T>
5735
      inline bool is_ivariable_node(const expression_node<T>* node)
5736
48
      {
5737
48
         return node &&
5738
48
                (
5739
48
                  details::expression_node<T>::e_variable      == node->type() ||
5740
48
                  details::expression_node<T>::e_vecelem       == node->type() ||
5741
48
                  details::expression_node<T>::e_veccelem      == node->type() ||
5742
48
                  details::expression_node<T>::e_vecelemrtc    == node->type() ||
5743
48
                  details::expression_node<T>::e_veccelemrtc   == node->type() ||
5744
48
                  details::expression_node<T>::e_rbvecelem     == node->type() ||
5745
48
                  details::expression_node<T>::e_rbveccelem    == node->type() ||
5746
48
                  details::expression_node<T>::e_rbvecelemrtc  == node->type() ||
5747
48
                  details::expression_node<T>::e_rbveccelemrtc == node->type()
5748
48
                );
5749
48
      }
bool exprtk::details::is_ivariable_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5736
24
      {
5737
24
         return node &&
5738
24
                (
5739
24
                  details::expression_node<T>::e_variable      == node->type() ||
5740
24
                  details::expression_node<T>::e_vecelem       == node->type() ||
5741
24
                  details::expression_node<T>::e_veccelem      == node->type() ||
5742
24
                  details::expression_node<T>::e_vecelemrtc    == node->type() ||
5743
24
                  details::expression_node<T>::e_veccelemrtc   == node->type() ||
5744
24
                  details::expression_node<T>::e_rbvecelem     == node->type() ||
5745
24
                  details::expression_node<T>::e_rbveccelem    == node->type() ||
5746
24
                  details::expression_node<T>::e_rbvecelemrtc  == node->type() ||
5747
24
                  details::expression_node<T>::e_rbveccelemrtc == node->type()
5748
24
                );
5749
24
      }
bool exprtk::details::is_ivariable_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5736
24
      {
5737
24
         return node &&
5738
24
                (
5739
24
                  details::expression_node<T>::e_variable      == node->type() ||
5740
24
                  details::expression_node<T>::e_vecelem       == node->type() ||
5741
24
                  details::expression_node<T>::e_veccelem      == node->type() ||
5742
24
                  details::expression_node<T>::e_vecelemrtc    == node->type() ||
5743
24
                  details::expression_node<T>::e_veccelemrtc   == node->type() ||
5744
24
                  details::expression_node<T>::e_rbvecelem     == node->type() ||
5745
24
                  details::expression_node<T>::e_rbveccelem    == node->type() ||
5746
24
                  details::expression_node<T>::e_rbvecelemrtc  == node->type() ||
5747
24
                  details::expression_node<T>::e_rbveccelemrtc == node->type()
5748
24
                );
5749
24
      }
5750
5751
      template <typename T>
5752
      inline bool is_vector_elem_node(const expression_node<T>* node)
5753
74
      {
5754
74
         return node && (details::expression_node<T>::e_vecelem == node->type());
5755
74
      }
bool exprtk::details::is_vector_elem_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5753
37
      {
5754
37
         return node && (details::expression_node<T>::e_vecelem == node->type());
5755
37
      }
bool exprtk::details::is_vector_elem_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5753
37
      {
5754
37
         return node && (details::expression_node<T>::e_vecelem == node->type());
5755
37
      }
5756
5757
      template <typename T>
5758
      inline bool is_vector_celem_node(const expression_node<T>* node)
5759
74
      {
5760
74
         return node && (details::expression_node<T>::e_veccelem == node->type());
5761
74
      }
bool exprtk::details::is_vector_celem_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5759
37
      {
5760
37
         return node && (details::expression_node<T>::e_veccelem == node->type());
5761
37
      }
bool exprtk::details::is_vector_celem_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5759
37
      {
5760
37
         return node && (details::expression_node<T>::e_veccelem == node->type());
5761
37
      }
5762
5763
      template <typename T>
5764
      inline bool is_vector_elem_rtc_node(const expression_node<T>* node)
5765
74
      {
5766
74
         return node && (details::expression_node<T>::e_vecelemrtc == node->type());
5767
74
      }
bool exprtk::details::is_vector_elem_rtc_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5765
37
      {
5766
37
         return node && (details::expression_node<T>::e_vecelemrtc == node->type());
5767
37
      }
bool exprtk::details::is_vector_elem_rtc_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5765
37
      {
5766
37
         return node && (details::expression_node<T>::e_vecelemrtc == node->type());
5767
37
      }
5768
5769
      template <typename T>
5770
      inline bool is_vector_celem_rtc_node(const expression_node<T>* node)
5771
74
      {
5772
74
         return node && (details::expression_node<T>::e_veccelemrtc == node->type());
5773
74
      }
bool exprtk::details::is_vector_celem_rtc_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5771
37
      {
5772
37
         return node && (details::expression_node<T>::e_veccelemrtc == node->type());
5773
37
      }
bool exprtk::details::is_vector_celem_rtc_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5771
37
      {
5772
37
         return node && (details::expression_node<T>::e_veccelemrtc == node->type());
5773
37
      }
5774
5775
      template <typename T>
5776
      inline bool is_rebasevector_elem_node(const expression_node<T>* node)
5777
74
      {
5778
74
         return node && (details::expression_node<T>::e_rbvecelem == node->type());
5779
74
      }
bool exprtk::details::is_rebasevector_elem_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5777
37
      {
5778
37
         return node && (details::expression_node<T>::e_rbvecelem == node->type());
5779
37
      }
bool exprtk::details::is_rebasevector_elem_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5777
37
      {
5778
37
         return node && (details::expression_node<T>::e_rbvecelem == node->type());
5779
37
      }
5780
5781
      template <typename T>
5782
      inline bool is_rebasevector_elem_rtc_node(const expression_node<T>* node)
5783
74
      {
5784
74
         return node && (details::expression_node<T>::e_rbvecelemrtc == node->type());
5785
74
      }
bool exprtk::details::is_rebasevector_elem_rtc_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5783
37
      {
5784
37
         return node && (details::expression_node<T>::e_rbvecelemrtc == node->type());
5785
37
      }
bool exprtk::details::is_rebasevector_elem_rtc_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5783
37
      {
5784
37
         return node && (details::expression_node<T>::e_rbvecelemrtc == node->type());
5785
37
      }
5786
5787
      template <typename T>
5788
      inline bool is_rebasevector_celem_rtc_node(const expression_node<T>* node)
5789
62
      {
5790
62
         return node && (details::expression_node<T>::e_rbveccelemrtc == node->type());
5791
62
      }
bool exprtk::details::is_rebasevector_celem_rtc_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5789
31
      {
5790
31
         return node && (details::expression_node<T>::e_rbveccelemrtc == node->type());
5791
31
      }
bool exprtk::details::is_rebasevector_celem_rtc_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5789
31
      {
5790
31
         return node && (details::expression_node<T>::e_rbveccelemrtc == node->type());
5791
31
      }
5792
5793
      template <typename T>
5794
      inline bool is_rebasevector_celem_node(const expression_node<T>* node)
5795
74
      {
5796
74
         return node && (details::expression_node<T>::e_rbveccelem == node->type());
5797
74
      }
bool exprtk::details::is_rebasevector_celem_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5795
37
      {
5796
37
         return node && (details::expression_node<T>::e_rbveccelem == node->type());
5797
37
      }
bool exprtk::details::is_rebasevector_celem_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5795
37
      {
5796
37
         return node && (details::expression_node<T>::e_rbveccelem == node->type());
5797
37
      }
5798
5799
      template <typename T>
5800
      inline bool is_vector_node(const expression_node<T>* node)
5801
14.2k
      {
5802
14.2k
         return node && (details::expression_node<T>::e_vector == node->type());
5803
14.2k
      }
bool exprtk::details::is_vector_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5801
10.6k
      {
5802
10.6k
         return node && (details::expression_node<T>::e_vector == node->type());
5803
10.6k
      }
bool exprtk::details::is_vector_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5801
3.65k
      {
5802
3.65k
         return node && (details::expression_node<T>::e_vector == node->type());
5803
3.65k
      }
5804
5805
      template <typename T>
5806
      inline bool is_ivector_node(const expression_node<T>* node)
5807
1.04M
      {
5808
1.04M
         if (node)
5809
1.04M
         {
5810
1.04M
            switch (node->type())
5811
1.04M
            {
5812
0
               case details::expression_node<T>::e_vector      :
5813
0
               case details::expression_node<T>::e_vecvalass   :
5814
0
               case details::expression_node<T>::e_vecvecass   :
5815
0
               case details::expression_node<T>::e_vecopvalass :
5816
0
               case details::expression_node<T>::e_vecopvecass :
5817
0
               case details::expression_node<T>::e_vecvecswap  :
5818
0
               case details::expression_node<T>::e_vecvecarith :
5819
0
               case details::expression_node<T>::e_vecvalarith :
5820
0
               case details::expression_node<T>::e_valvecarith :
5821
0
               case details::expression_node<T>::e_vecunaryop  :
5822
0
               case details::expression_node<T>::e_vecondition : return true;
5823
1.04M
               default                                         : return false;
5824
1.04M
            }
5825
1.04M
         }
5826
0
         else
5827
0
            return false;
5828
1.04M
      }
bool exprtk::details::is_ivector_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5807
728k
      {
5808
728k
         if (node)
5809
728k
         {
5810
728k
            switch (node->type())
5811
728k
            {
5812
0
               case details::expression_node<T>::e_vector      :
5813
0
               case details::expression_node<T>::e_vecvalass   :
5814
0
               case details::expression_node<T>::e_vecvecass   :
5815
0
               case details::expression_node<T>::e_vecopvalass :
5816
0
               case details::expression_node<T>::e_vecopvecass :
5817
0
               case details::expression_node<T>::e_vecvecswap  :
5818
0
               case details::expression_node<T>::e_vecvecarith :
5819
0
               case details::expression_node<T>::e_vecvalarith :
5820
0
               case details::expression_node<T>::e_valvecarith :
5821
0
               case details::expression_node<T>::e_vecunaryop  :
5822
0
               case details::expression_node<T>::e_vecondition : return true;
5823
728k
               default                                         : return false;
5824
728k
            }
5825
728k
         }
5826
0
         else
5827
0
            return false;
5828
728k
      }
bool exprtk::details::is_ivector_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5807
319k
      {
5808
319k
         if (node)
5809
319k
         {
5810
319k
            switch (node->type())
5811
319k
            {
5812
0
               case details::expression_node<T>::e_vector      :
5813
0
               case details::expression_node<T>::e_vecvalass   :
5814
0
               case details::expression_node<T>::e_vecvecass   :
5815
0
               case details::expression_node<T>::e_vecopvalass :
5816
0
               case details::expression_node<T>::e_vecopvecass :
5817
0
               case details::expression_node<T>::e_vecvecswap  :
5818
0
               case details::expression_node<T>::e_vecvecarith :
5819
0
               case details::expression_node<T>::e_vecvalarith :
5820
0
               case details::expression_node<T>::e_valvecarith :
5821
0
               case details::expression_node<T>::e_vecunaryop  :
5822
0
               case details::expression_node<T>::e_vecondition : return true;
5823
319k
               default                                         : return false;
5824
319k
            }
5825
319k
         }
5826
0
         else
5827
0
            return false;
5828
319k
      }
5829
5830
      template <typename T>
5831
      inline bool is_constant_node(const expression_node<T>* node)
5832
1.72M
      {
5833
1.72M
         return node &&
5834
1.72M
         (
5835
1.72M
           details::expression_node<T>::e_constant    == node->type() ||
5836
1.72M
           details::expression_node<T>::e_stringconst == node->type()
5837
1.72M
         );
5838
1.72M
      }
bool exprtk::details::is_constant_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5832
1.15M
      {
5833
1.15M
         return node &&
5834
1.15M
         (
5835
1.15M
           details::expression_node<T>::e_constant    == node->type() ||
5836
1.15M
           details::expression_node<T>::e_stringconst == node->type()
5837
1.15M
         );
5838
1.15M
      }
bool exprtk::details::is_constant_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5832
571k
      {
5833
571k
         return node &&
5834
571k
         (
5835
571k
           details::expression_node<T>::e_constant    == node->type() ||
5836
571k
           details::expression_node<T>::e_stringconst == node->type()
5837
571k
         );
5838
571k
      }
5839
5840
      template <typename T>
5841
      inline bool is_null_node(const expression_node<T>* node)
5842
1.08M
      {
5843
1.08M
         return node && (details::expression_node<T>::e_null == node->type());
5844
1.08M
      }
bool exprtk::details::is_null_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5842
751k
      {
5843
751k
         return node && (details::expression_node<T>::e_null == node->type());
5844
751k
      }
bool exprtk::details::is_null_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5842
333k
      {
5843
333k
         return node && (details::expression_node<T>::e_null == node->type());
5844
333k
      }
5845
5846
      template <typename T>
5847
      inline bool is_break_node(const expression_node<T>* node)
5848
577k
      {
5849
577k
         return node && (details::expression_node<T>::e_break == node->type());
5850
577k
      }
bool exprtk::details::is_break_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5848
395k
      {
5849
395k
         return node && (details::expression_node<T>::e_break == node->type());
5850
395k
      }
bool exprtk::details::is_break_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5848
181k
      {
5849
181k
         return node && (details::expression_node<T>::e_break == node->type());
5850
181k
      }
5851
5852
      template <typename T>
5853
      inline bool is_continue_node(const expression_node<T>* node)
5854
577k
      {
5855
577k
         return node && (details::expression_node<T>::e_continue == node->type());
5856
577k
      }
bool exprtk::details::is_continue_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5854
395k
      {
5855
395k
         return node && (details::expression_node<T>::e_continue == node->type());
5856
395k
      }
bool exprtk::details::is_continue_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5854
181k
      {
5855
181k
         return node && (details::expression_node<T>::e_continue == node->type());
5856
181k
      }
5857
5858
      template <typename T>
5859
      inline bool is_swap_node(const expression_node<T>* node)
5860
      {
5861
         return node && (details::expression_node<T>::e_swap == node->type());
5862
      }
5863
5864
      template <typename T>
5865
      inline bool is_function(const expression_node<T>* node)
5866
      {
5867
         return node && (details::expression_node<T>::e_function == node->type());
5868
      }
5869
5870
      template <typename T>
5871
      inline bool is_vararg_node(const expression_node<T>* node)
5872
      {
5873
         return node && (details::expression_node<T>::e_vararg == node->type());
5874
      }
5875
5876
      template <typename T>
5877
      inline bool is_return_node(const expression_node<T>* node)
5878
526k
      {
5879
526k
         return node && (details::expression_node<T>::e_return == node->type());
5880
526k
      }
bool exprtk::details::is_return_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5878
365k
      {
5879
365k
         return node && (details::expression_node<T>::e_return == node->type());
5880
365k
      }
bool exprtk::details::is_return_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5878
161k
      {
5879
161k
         return node && (details::expression_node<T>::e_return == node->type());
5880
161k
      }
5881
5882
      template <typename T> class unary_node;
5883
5884
      template <typename T>
5885
      inline bool is_negate_node(const expression_node<T>* node)
5886
      {
5887
         if (node && is_unary_node(node))
5888
         {
5889
            return (details::e_neg == static_cast<const unary_node<T>*>(node)->operation());
5890
         }
5891
         else
5892
            return false;
5893
      }
5894
5895
      template <typename T>
5896
      inline bool is_assert_node(const expression_node<T>* node)
5897
      {
5898
         return node && (details::expression_node<T>::e_assert == node->type());
5899
      }
5900
5901
      template <typename T>
5902
      inline bool branch_deletable(const expression_node<T>* node)
5903
284k
      {
5904
284k
         return (0 != node)             &&
5905
284k
                !is_variable_node(node) &&
5906
284k
                !is_string_node  (node) ;
5907
284k
      }
bool exprtk::details::branch_deletable<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5903
186k
      {
5904
186k
         return (0 != node)             &&
5905
186k
                !is_variable_node(node) &&
5906
186k
                !is_string_node  (node) ;
5907
186k
      }
bool exprtk::details::branch_deletable<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5903
97.3k
      {
5904
97.3k
         return (0 != node)             &&
5905
97.3k
                !is_variable_node(node) &&
5906
97.3k
                !is_string_node  (node) ;
5907
97.3k
      }
5908
5909
      template <std::size_t N, typename T>
5910
      inline bool all_nodes_valid(expression_node<T>* const (&b)[N])
5911
63.5k
      {
5912
137k
         for (std::size_t i = 0; i < N; ++i)
5913
73.9k
         {
5914
73.9k
            if (0 == b[i]) return false;
5915
73.9k
         }
5916
5917
63.5k
         return true;
5918
63.5k
      }
bool exprtk::details::all_nodes_valid<1ul, double>(exprtk::details::expression_node<double>* const (&) [1ul])
Line
Count
Source
5911
30.8k
      {
5912
61.6k
         for (std::size_t i = 0; i < N; ++i)
5913
30.8k
         {
5914
30.8k
            if (0 == b[i]) return false;
5915
30.8k
         }
5916
5917
30.8k
         return true;
5918
30.8k
      }
bool exprtk::details::all_nodes_valid<2ul, double>(exprtk::details::expression_node<double>* const (&) [2ul])
Line
Count
Source
5911
7.70k
      {
5912
23.1k
         for (std::size_t i = 0; i < N; ++i)
5913
15.4k
         {
5914
15.4k
            if (0 == b[i]) return false;
5915
15.4k
         }
5916
5917
7.70k
         return true;
5918
7.70k
      }
bool exprtk::details::all_nodes_valid<3ul, double>(exprtk::details::expression_node<double>* const (&) [3ul])
Line
Count
Source
5911
101
      {
5912
404
         for (std::size_t i = 0; i < N; ++i)
5913
303
         {
5914
303
            if (0 == b[i]) return false;
5915
303
         }
5916
5917
101
         return true;
5918
101
      }
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
5911
22.4k
      {
5912
44.9k
         for (std::size_t i = 0; i < N; ++i)
5913
22.4k
         {
5914
22.4k
            if (0 == b[i]) return false;
5915
22.4k
         }
5916
5917
22.4k
         return true;
5918
22.4k
      }
bool exprtk::details::all_nodes_valid<2ul, float>(exprtk::details::expression_node<float>* const (&) [2ul])
Line
Count
Source
5911
2.33k
      {
5912
7.01k
         for (std::size_t i = 0; i < N; ++i)
5913
4.67k
         {
5914
4.67k
            if (0 == b[i]) return false;
5915
4.67k
         }
5916
5917
2.33k
         return true;
5918
2.33k
      }
bool exprtk::details::all_nodes_valid<3ul, float>(exprtk::details::expression_node<float>* const (&) [3ul])
Line
Count
Source
5911
101
      {
5912
404
         for (std::size_t i = 0; i < N; ++i)
5913
303
         {
5914
303
            if (0 == b[i]) return false;
5915
303
         }
5916
5917
101
         return true;
5918
101
      }
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])
5919
5920
      template <typename T,
5921
                typename Allocator,
5922
                template <typename, typename> class Sequence>
5923
      inline bool all_nodes_valid(const Sequence<expression_node<T>*,Allocator>& b)
5924
124
      {
5925
719
         for (std::size_t i = 0; i < b.size(); ++i)
5926
595
         {
5927
595
            if (0 == b[i]) return false;
5928
595
         }
5929
5930
124
         return true;
5931
124
      }
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
5924
63
      {
5925
365
         for (std::size_t i = 0; i < b.size(); ++i)
5926
302
         {
5927
302
            if (0 == b[i]) return false;
5928
302
         }
5929
5930
63
         return true;
5931
63
      }
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
5924
61
      {
5925
354
         for (std::size_t i = 0; i < b.size(); ++i)
5926
293
         {
5927
293
            if (0 == b[i]) return false;
5928
293
         }
5929
5930
61
         return true;
5931
61
      }
5932
5933
      template <std::size_t N, typename T>
5934
      inline bool all_nodes_variables(expression_node<T>* const (&b)[N])
5935
202
      {
5936
202
         for (std::size_t i = 0; i < N; ++i)
5937
202
         {
5938
202
            if (0 == b[i])
5939
0
               return false;
5940
202
            else if (!is_variable_node(b[i]))
5941
202
               return false;
5942
202
         }
5943
5944
0
         return true;
5945
202
      }
bool exprtk::details::all_nodes_variables<3ul, double>(exprtk::details::expression_node<double>* const (&) [3ul])
Line
Count
Source
5935
101
      {
5936
101
         for (std::size_t i = 0; i < N; ++i)
5937
101
         {
5938
101
            if (0 == b[i])
5939
0
               return false;
5940
101
            else if (!is_variable_node(b[i]))
5941
101
               return false;
5942
101
         }
5943
5944
0
         return true;
5945
101
      }
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
5935
101
      {
5936
101
         for (std::size_t i = 0; i < N; ++i)
5937
101
         {
5938
101
            if (0 == b[i])
5939
0
               return false;
5940
101
            else if (!is_variable_node(b[i]))
5941
101
               return false;
5942
101
         }
5943
5944
0
         return true;
5945
101
      }
Unexecuted instantiation: bool exprtk::details::all_nodes_variables<4ul, float>(exprtk::details::expression_node<float>* const (&) [4ul])
5946
5947
      template <typename T,
5948
                typename Allocator,
5949
                template <typename, typename> class Sequence>
5950
      inline bool all_nodes_variables(const Sequence<expression_node<T>*,Allocator>& b)
5951
115
      {
5952
217
         for (std::size_t i = 0; i < b.size(); ++i)
5953
165
         {
5954
165
            if (0 == b[i])
5955
0
               return false;
5956
165
            else if (!is_variable_node(b[i]))
5957
63
               return false;
5958
165
         }
5959
5960
52
         return true;
5961
115
      }
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
5951
58
      {
5952
109
         for (std::size_t i = 0; i < b.size(); ++i)
5953
83
         {
5954
83
            if (0 == b[i])
5955
0
               return false;
5956
83
            else if (!is_variable_node(b[i]))
5957
32
               return false;
5958
83
         }
5959
5960
26
         return true;
5961
58
      }
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
5951
57
      {
5952
108
         for (std::size_t i = 0; i < b.size(); ++i)
5953
82
         {
5954
82
            if (0 == b[i])
5955
0
               return false;
5956
82
            else if (!is_variable_node(b[i]))
5957
31
               return false;
5958
82
         }
5959
5960
26
         return true;
5961
57
      }
5962
5963
      template <typename Node>
5964
      class node_collection_destructor
5965
      {
5966
      public:
5967
5968
         typedef node_collector_interface<Node> nci_t;
5969
5970
         typedef typename nci_t::node_ptr_t     node_ptr_t;
5971
         typedef typename nci_t::node_pp_t      node_pp_t;
5972
         typedef typename nci_t::noderef_list_t noderef_list_t;
5973
5974
         static void delete_nodes(node_ptr_t& root)
5975
233k
         {
5976
233k
            std::vector<node_pp_t> node_delete_list;
5977
233k
            node_delete_list.reserve(1000);
5978
5979
233k
            collect_nodes(root, node_delete_list);
5980
5981
729k
            for (std::size_t i = 0; i < node_delete_list.size(); ++i)
5982
496k
            {
5983
496k
               node_ptr_t& node = *node_delete_list[i];
5984
496k
               exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node)));
5985
496k
               delete node;
5986
496k
               node = reinterpret_cast<node_ptr_t>(0);
5987
496k
            }
5988
233k
         }
exprtk::details::node_collection_destructor<exprtk::details::expression_node<double> >::delete_nodes(exprtk::details::expression_node<double>*&)
Line
Count
Source
5975
151k
         {
5976
151k
            std::vector<node_pp_t> node_delete_list;
5977
151k
            node_delete_list.reserve(1000);
5978
5979
151k
            collect_nodes(root, node_delete_list);
5980
5981
478k
            for (std::size_t i = 0; i < node_delete_list.size(); ++i)
5982
327k
            {
5983
327k
               node_ptr_t& node = *node_delete_list[i];
5984
327k
               exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node)));
5985
327k
               delete node;
5986
327k
               node = reinterpret_cast<node_ptr_t>(0);
5987
327k
            }
5988
151k
         }
exprtk::details::node_collection_destructor<exprtk::details::expression_node<float> >::delete_nodes(exprtk::details::expression_node<float>*&)
Line
Count
Source
5975
82.0k
         {
5976
82.0k
            std::vector<node_pp_t> node_delete_list;
5977
82.0k
            node_delete_list.reserve(1000);
5978
5979
82.0k
            collect_nodes(root, node_delete_list);
5980
5981
250k
            for (std::size_t i = 0; i < node_delete_list.size(); ++i)
5982
168k
            {
5983
168k
               node_ptr_t& node = *node_delete_list[i];
5984
168k
               exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node)));
5985
168k
               delete node;
5986
168k
               node = reinterpret_cast<node_ptr_t>(0);
5987
168k
            }
5988
82.0k
         }
5989
5990
      private:
5991
5992
         static void collect_nodes(node_ptr_t& root, noderef_list_t& node_delete_list)
5993
233k
         {
5994
233k
            std::deque<node_ptr_t> node_list;
5995
233k
            node_list.push_back(root);
5996
233k
            node_delete_list.push_back(&root);
5997
5998
233k
            noderef_list_t child_node_delete_list;
5999
233k
            child_node_delete_list.reserve(1000);
6000
6001
729k
            while (!node_list.empty())
6002
496k
            {
6003
496k
               node_list.front()->collect_nodes(child_node_delete_list);
6004
6005
496k
               if (!child_node_delete_list.empty())
6006
179k
               {
6007
442k
                  for (std::size_t i = 0; i < child_node_delete_list.size(); ++i)
6008
263k
                  {
6009
263k
                     node_pp_t& node = child_node_delete_list[i];
6010
6011
263k
                     if (0 == (*node))
6012
0
                     {
6013
0
                        exprtk_debug(("ncd::collect_nodes() - null node encountered.\n"));
6014
0
                     }
6015
6016
263k
                     node_list.push_back(*node);
6017
263k
                  }
6018
6019
179k
                  node_delete_list.insert(
6020
179k
                     node_delete_list.end(),
6021
179k
                     child_node_delete_list.begin(), child_node_delete_list.end());
6022
6023
179k
                  child_node_delete_list.clear();
6024
179k
               }
6025
6026
496k
               node_list.pop_front();
6027
496k
            }
6028
6029
233k
            std::reverse(node_delete_list.begin(), node_delete_list.end());
6030
233k
         }
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
5993
151k
         {
5994
151k
            std::deque<node_ptr_t> node_list;
5995
151k
            node_list.push_back(root);
5996
151k
            node_delete_list.push_back(&root);
5997
5998
151k
            noderef_list_t child_node_delete_list;
5999
151k
            child_node_delete_list.reserve(1000);
6000
6001
478k
            while (!node_list.empty())
6002
327k
            {
6003
327k
               node_list.front()->collect_nodes(child_node_delete_list);
6004
6005
327k
               if (!child_node_delete_list.empty())
6006
120k
               {
6007
297k
                  for (std::size_t i = 0; i < child_node_delete_list.size(); ++i)
6008
176k
                  {
6009
176k
                     node_pp_t& node = child_node_delete_list[i];
6010
6011
176k
                     if (0 == (*node))
6012
0
                     {
6013
0
                        exprtk_debug(("ncd::collect_nodes() - null node encountered.\n"));
6014
0
                     }
6015
6016
176k
                     node_list.push_back(*node);
6017
176k
                  }
6018
6019
120k
                  node_delete_list.insert(
6020
120k
                     node_delete_list.end(),
6021
120k
                     child_node_delete_list.begin(), child_node_delete_list.end());
6022
6023
120k
                  child_node_delete_list.clear();
6024
120k
               }
6025
6026
327k
               node_list.pop_front();
6027
327k
            }
6028
6029
151k
            std::reverse(node_delete_list.begin(), node_delete_list.end());
6030
151k
         }
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
5993
82.0k
         {
5994
82.0k
            std::deque<node_ptr_t> node_list;
5995
82.0k
            node_list.push_back(root);
5996
82.0k
            node_delete_list.push_back(&root);
5997
5998
82.0k
            noderef_list_t child_node_delete_list;
5999
82.0k
            child_node_delete_list.reserve(1000);
6000
6001
250k
            while (!node_list.empty())
6002
168k
            {
6003
168k
               node_list.front()->collect_nodes(child_node_delete_list);
6004
6005
168k
               if (!child_node_delete_list.empty())
6006
58.9k
               {
6007
145k
                  for (std::size_t i = 0; i < child_node_delete_list.size(); ++i)
6008
86.8k
                  {
6009
86.8k
                     node_pp_t& node = child_node_delete_list[i];
6010
6011
86.8k
                     if (0 == (*node))
6012
0
                     {
6013
0
                        exprtk_debug(("ncd::collect_nodes() - null node encountered.\n"));
6014
0
                     }
6015
6016
86.8k
                     node_list.push_back(*node);
6017
86.8k
                  }
6018
6019
58.9k
                  node_delete_list.insert(
6020
58.9k
                     node_delete_list.end(),
6021
58.9k
                     child_node_delete_list.begin(), child_node_delete_list.end());
6022
6023
58.9k
                  child_node_delete_list.clear();
6024
58.9k
               }
6025
6026
168k
               node_list.pop_front();
6027
168k
            }
6028
6029
82.0k
            std::reverse(node_delete_list.begin(), node_delete_list.end());
6030
82.0k
         }
6031
      };
6032
6033
      template <typename NodeAllocator, typename T, std::size_t N>
6034
      inline void free_all_nodes(NodeAllocator& node_allocator, expression_node<T>* (&b)[N])
6035
240
      {
6036
720
         for (std::size_t i = 0; i < N; ++i)
6037
480
         {
6038
480
            free_node(node_allocator,b[i]);
6039
480
         }
6040
240
      }
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
6035
120
      {
6036
360
         for (std::size_t i = 0; i < N; ++i)
6037
240
         {
6038
240
            free_node(node_allocator,b[i]);
6039
240
         }
6040
120
      }
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
6035
120
      {
6036
360
         for (std::size_t i = 0; i < N; ++i)
6037
240
         {
6038
240
            free_node(node_allocator,b[i]);
6039
240
         }
6040
120
      }
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])
6041
6042
      template <typename NodeAllocator,
6043
                typename T,
6044
                typename Allocator,
6045
                template <typename, typename> class Sequence>
6046
      inline void free_all_nodes(NodeAllocator& node_allocator, Sequence<expression_node<T>*,Allocator>& b)
6047
0
      {
6048
0
         for (std::size_t i = 0; i < b.size(); ++i)
6049
0
         {
6050
0
            free_node(node_allocator,b[i]);
6051
0
         }
6052
6053
0
         b.clear();
6054
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>*> >&)
6055
6056
      template <typename NodeAllocator, typename T>
6057
      inline void free_node(NodeAllocator&, expression_node<T>*& node)
6058
218k
      {
6059
218k
         if ((0 == node) || is_variable_node(node) || is_string_node(node))
6060
5.01k
         {
6061
5.01k
            return;
6062
5.01k
         }
6063
6064
213k
         node_collection_destructor<expression_node<T> >
6065
213k
            ::delete_nodes(node);
6066
213k
      }
void exprtk::details::free_node<exprtk::details::node_allocator, double>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>*&)
Line
Count
Source
6058
143k
      {
6059
143k
         if ((0 == node) || is_variable_node(node) || is_string_node(node))
6060
2.51k
         {
6061
2.51k
            return;
6062
2.51k
         }
6063
6064
141k
         node_collection_destructor<expression_node<T> >
6065
141k
            ::delete_nodes(node);
6066
141k
      }
void exprtk::details::free_node<exprtk::details::node_allocator, float>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>*&)
Line
Count
Source
6058
74.9k
      {
6059
74.9k
         if ((0 == node) || is_variable_node(node) || is_string_node(node))
6060
2.49k
         {
6061
2.49k
            return;
6062
2.49k
         }
6063
6064
72.4k
         node_collection_destructor<expression_node<T> >
6065
72.4k
            ::delete_nodes(node);
6066
72.4k
      }
6067
6068
      template <typename T>
6069
      inline void destroy_node(expression_node<T>*& node)
6070
19.2k
      {
6071
19.2k
         if (0 != node)
6072
19.2k
         {
6073
19.2k
            node_collection_destructor<expression_node<T> >
6074
19.2k
               ::delete_nodes(node);
6075
19.2k
         }
6076
19.2k
      }
void exprtk::details::destroy_node<double>(exprtk::details::expression_node<double>*&)
Line
Count
Source
6070
9.63k
      {
6071
9.63k
         if (0 != node)
6072
9.63k
         {
6073
9.63k
            node_collection_destructor<expression_node<T> >
6074
9.63k
               ::delete_nodes(node);
6075
9.63k
         }
6076
9.63k
      }
void exprtk::details::destroy_node<float>(exprtk::details::expression_node<float>*&)
Line
Count
Source
6070
9.62k
      {
6071
9.62k
         if (0 != node)
6072
9.62k
         {
6073
9.62k
            node_collection_destructor<expression_node<T> >
6074
9.62k
               ::delete_nodes(node);
6075
9.62k
         }
6076
9.62k
      }
6077
6078
      template <typename Node>
6079
      struct node_depth_base
6080
      {
6081
         typedef Node* node_ptr_t;
6082
         typedef std::pair<node_ptr_t,bool> nb_pair_t;
6083
6084
         node_depth_base()
6085
587k
         : depth_set(false)
6086
587k
         , depth(0)
6087
587k
         {}
exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::node_depth_base()
Line
Count
Source
6085
372k
         : depth_set(false)
6086
372k
         , depth(0)
6087
372k
         {}
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::node_depth_base()
Line
Count
Source
6085
214k
         : depth_set(false)
6086
214k
         , depth(0)
6087
214k
         {}
6088
6089
         virtual ~node_depth_base()
6090
587k
         {}
exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::~node_depth_base()
Line
Count
Source
6090
372k
         {}
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::~node_depth_base()
Line
Count
Source
6090
214k
         {}
6091
6092
757k
         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
6092
496k
         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
6092
261k
         virtual std::size_t node_depth() const { return 1; }
6093
6094
         std::size_t compute_node_depth(const Node* const& node) const
6095
486
         {
6096
486
            if (!depth_set)
6097
65
            {
6098
65
               depth = 1 + (node ? node->node_depth() : 0);
6099
65
               depth_set = true;
6100
65
            }
6101
6102
486
            return depth;
6103
486
         }
exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth(exprtk::details::expression_node<double> const* const&) const
Line
Count
Source
6095
247
         {
6096
247
            if (!depth_set)
6097
33
            {
6098
33
               depth = 1 + (node ? node->node_depth() : 0);
6099
33
               depth_set = true;
6100
33
            }
6101
6102
247
            return depth;
6103
247
         }
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth(exprtk::details::expression_node<float> const* const&) const
Line
Count
Source
6095
239
         {
6096
239
            if (!depth_set)
6097
32
            {
6098
32
               depth = 1 + (node ? node->node_depth() : 0);
6099
32
               depth_set = true;
6100
32
            }
6101
6102
239
            return depth;
6103
239
         }
6104
6105
         std::size_t compute_node_depth(const nb_pair_t& branch) const
6106
212k
         {
6107
212k
            if (!depth_set)
6108
95.7k
            {
6109
95.7k
               depth = 1 + (branch.first ? branch.first->node_depth() : 0);
6110
95.7k
               depth_set = true;
6111
95.7k
            }
6112
6113
212k
            return depth;
6114
212k
         }
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
6106
147k
         {
6107
147k
            if (!depth_set)
6108
64.9k
            {
6109
64.9k
               depth = 1 + (branch.first ? branch.first->node_depth() : 0);
6110
64.9k
               depth_set = true;
6111
64.9k
            }
6112
6113
147k
            return depth;
6114
147k
         }
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
6106
64.6k
         {
6107
64.6k
            if (!depth_set)
6108
30.8k
            {
6109
30.8k
               depth = 1 + (branch.first ? branch.first->node_depth() : 0);
6110
30.8k
               depth_set = true;
6111
30.8k
            }
6112
6113
64.6k
            return depth;
6114
64.6k
         }
6115
6116
         template <std::size_t N>
6117
         std::size_t compute_node_depth(const nb_pair_t (&branch)[N]) const
6118
174k
         {
6119
174k
            if (!depth_set)
6120
84.1k
            {
6121
84.1k
               depth = 0;
6122
6123
252k
               for (std::size_t i = 0; i < N; ++i)
6124
168k
               {
6125
168k
                  if (branch[i].first)
6126
168k
                  {
6127
168k
                     depth = std::max(depth,branch[i].first->node_depth());
6128
168k
                  }
6129
168k
               }
6130
6131
84.1k
               depth += 1;
6132
84.1k
               depth_set = true;
6133
84.1k
            }
6134
6135
174k
            return depth;
6136
174k
         }
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
6118
115k
         {
6119
115k
            if (!depth_set)
6120
55.8k
            {
6121
55.8k
               depth = 0;
6122
6123
167k
               for (std::size_t i = 0; i < N; ++i)
6124
111k
               {
6125
111k
                  if (branch[i].first)
6126
111k
                  {
6127
111k
                     depth = std::max(depth,branch[i].first->node_depth());
6128
111k
                  }
6129
111k
               }
6130
6131
55.8k
               depth += 1;
6132
55.8k
               depth_set = true;
6133
55.8k
            }
6134
6135
115k
            return depth;
6136
115k
         }
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
6118
303
         {
6119
303
            if (!depth_set)
6120
101
            {
6121
101
               depth = 0;
6122
6123
404
               for (std::size_t i = 0; i < N; ++i)
6124
303
               {
6125
303
                  if (branch[i].first)
6126
303
                  {
6127
303
                     depth = std::max(depth,branch[i].first->node_depth());
6128
303
                  }
6129
303
               }
6130
6131
101
               depth += 1;
6132
101
               depth_set = true;
6133
101
            }
6134
6135
303
            return depth;
6136
303
         }
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
6118
58.8k
         {
6119
58.8k
            if (!depth_set)
6120
28.1k
            {
6121
28.1k
               depth = 0;
6122
6123
84.3k
               for (std::size_t i = 0; i < N; ++i)
6124
56.2k
               {
6125
56.2k
                  if (branch[i].first)
6126
56.2k
                  {
6127
56.2k
                     depth = std::max(depth,branch[i].first->node_depth());
6128
56.2k
                  }
6129
56.2k
               }
6130
6131
28.1k
               depth += 1;
6132
28.1k
               depth_set = true;
6133
28.1k
            }
6134
6135
58.8k
            return depth;
6136
58.8k
         }
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
6118
303
         {
6119
303
            if (!depth_set)
6120
101
            {
6121
101
               depth = 0;
6122
6123
404
               for (std::size_t i = 0; i < N; ++i)
6124
303
               {
6125
303
                  if (branch[i].first)
6126
303
                  {
6127
303
                     depth = std::max(depth,branch[i].first->node_depth());
6128
303
                  }
6129
303
               }
6130
6131
101
               depth += 1;
6132
101
               depth_set = true;
6133
101
            }
6134
6135
303
            return depth;
6136
303
         }
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
6137
6138
         template <typename BranchType>
6139
         std::size_t max_node_depth(const BranchType& n0, const BranchType& n1) const
6140
2
         {
6141
2
            return std::max(compute_node_depth(n0), compute_node_depth(n1));
6142
2
         }
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
Line
Count
Source
6140
1
         {
6141
1
            return std::max(compute_node_depth(n0), compute_node_depth(n1));
6142
1
         }
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
Line
Count
Source
6140
1
         {
6141
1
            return std::max(compute_node_depth(n0), compute_node_depth(n1));
6142
1
         }
6143
6144
         template <typename BranchType>
6145
         std::size_t max_node_depth(const BranchType& n0, const BranchType& n1, const BranchType& n2) const
6146
88
         {
6147
88
            return std::max(compute_node_depth(n0),
6148
88
                   std::max(compute_node_depth(n1), compute_node_depth(n2)));
6149
88
         }
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
6146
44
         {
6147
44
            return std::max(compute_node_depth(n0),
6148
44
                   std::max(compute_node_depth(n1), compute_node_depth(n2)));
6149
44
         }
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
6146
44
         {
6147
44
            return std::max(compute_node_depth(n0),
6148
44
                   std::max(compute_node_depth(n1), compute_node_depth(n2)));
6149
44
         }
6150
6151
         template <typename BranchType>
6152
         std::size_t max_node_depth(const BranchType& n0, const BranchType& n1,
6153
                                    const BranchType& n2, const BranchType& n3) const
6154
0
         {
6155
0
            return std::max(
6156
0
                     std::max(compute_node_depth(n0), compute_node_depth(n1)),
6157
0
                     std::max(compute_node_depth(n2), compute_node_depth(n3)));
6158
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
6159
6160
         template <typename BranchType>
6161
         std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1) const
6162
2
         {
6163
2
            if (!depth_set)
6164
2
            {
6165
2
               depth = 1 + max_node_depth(n0, n1);
6166
2
               depth_set = true;
6167
2
            }
6168
6169
2
            return depth;
6170
2
         }
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
Line
Count
Source
6162
1
         {
6163
1
            if (!depth_set)
6164
1
            {
6165
1
               depth = 1 + max_node_depth(n0, n1);
6166
1
               depth_set = true;
6167
1
            }
6168
6169
1
            return depth;
6170
1
         }
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
Line
Count
Source
6162
1
         {
6163
1
            if (!depth_set)
6164
1
            {
6165
1
               depth = 1 + max_node_depth(n0, n1);
6166
1
               depth_set = true;
6167
1
            }
6168
6169
1
            return depth;
6170
1
         }
6171
6172
         template <typename BranchType>
6173
         std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1,
6174
                                        const BranchType& n2) const
6175
186
         {
6176
186
            if (!depth_set)
6177
88
            {
6178
88
               depth = 1 + max_node_depth(n0, n1, n2);
6179
88
               depth_set = true;
6180
88
            }
6181
6182
186
            return depth;
6183
186
         }
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
6175
93
         {
6176
93
            if (!depth_set)
6177
44
            {
6178
44
               depth = 1 + max_node_depth(n0, n1, n2);
6179
44
               depth_set = true;
6180
44
            }
6181
6182
93
            return depth;
6183
93
         }
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
6175
93
         {
6176
93
            if (!depth_set)
6177
44
            {
6178
44
               depth = 1 + max_node_depth(n0, n1, n2);
6179
44
               depth_set = true;
6180
44
            }
6181
6182
93
            return depth;
6183
93
         }
6184
6185
         template <typename BranchType>
6186
         std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1,
6187
                                        const BranchType& n2, const BranchType& n3) const
6188
0
         {
6189
0
            if (!depth_set)
6190
0
            {
6191
0
               depth = 1 + max_node_depth(n0, n1, n2, n3);
6192
0
               depth_set = true;
6193
0
            }
6194
6195
0
            return depth;
6196
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
6197
6198
         template <typename Allocator,
6199
                   template <typename, typename> class Sequence>
6200
         std::size_t compute_node_depth(const Sequence<node_ptr_t, Allocator>& branch_list) const
6201
0
         {
6202
0
            if (!depth_set)
6203
0
            {
6204
0
               for (std::size_t i = 0; i < branch_list.size(); ++i)
6205
0
               {
6206
0
                  if (branch_list[i])
6207
0
                  {
6208
0
                     depth = std::max(depth, compute_node_depth(branch_list[i]));
6209
0
                  }
6210
0
               }
6211
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::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
6217
6218
         template <typename Allocator,
6219
                   template <typename, typename> class Sequence>
6220
         std::size_t compute_node_depth(const Sequence<nb_pair_t,Allocator>& branch_list) const
6221
107
         {
6222
107
            if (!depth_set)
6223
65
            {
6224
551
               for (std::size_t i = 0; i < branch_list.size(); ++i)
6225
486
               {
6226
486
                  if (branch_list[i].first)
6227
486
                  {
6228
486
                     depth = std::max(depth, compute_node_depth(branch_list[i].first));
6229
486
                  }
6230
486
               }
6231
6232
65
               depth_set = true;
6233
65
            }
6234
6235
107
            return depth;
6236
107
         }
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
6221
54
         {
6222
54
            if (!depth_set)
6223
33
            {
6224
280
               for (std::size_t i = 0; i < branch_list.size(); ++i)
6225
247
               {
6226
247
                  if (branch_list[i].first)
6227
247
                  {
6228
247
                     depth = std::max(depth, compute_node_depth(branch_list[i].first));
6229
247
                  }
6230
247
               }
6231
6232
33
               depth_set = true;
6233
33
            }
6234
6235
54
            return depth;
6236
54
         }
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
6221
53
         {
6222
53
            if (!depth_set)
6223
32
            {
6224
271
               for (std::size_t i = 0; i < branch_list.size(); ++i)
6225
239
               {
6226
239
                  if (branch_list[i].first)
6227
239
                  {
6228
239
                     depth = std::max(depth, compute_node_depth(branch_list[i].first));
6229
239
                  }
6230
239
               }
6231
6232
32
               depth_set = true;
6233
32
            }
6234
6235
53
            return depth;
6236
53
         }
6237
6238
         mutable bool depth_set;
6239
         mutable std::size_t depth;
6240
6241
         template <typename NodeSequence>
6242
         void collect(node_ptr_t const& node,
6243
                      const bool deletable,
6244
                      NodeSequence& delete_node_list) const
6245
264k
         {
6246
264k
            if ((0 != node) && deletable)
6247
263k
            {
6248
263k
               delete_node_list.push_back(const_cast<node_ptr_t*>(&node));
6249
263k
            }
6250
264k
         }
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
6245
177k
         {
6246
177k
            if ((0 != node) && deletable)
6247
176k
            {
6248
176k
               delete_node_list.push_back(const_cast<node_ptr_t*>(&node));
6249
176k
            }
6250
177k
         }
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
6245
87.6k
         {
6246
87.6k
            if ((0 != node) && deletable)
6247
86.8k
            {
6248
86.8k
               delete_node_list.push_back(const_cast<node_ptr_t*>(&node));
6249
86.8k
            }
6250
87.6k
         }
6251
6252
         template <typename NodeSequence>
6253
         void collect(const nb_pair_t& branch,
6254
                      NodeSequence& delete_node_list) const
6255
95.9k
         {
6256
95.9k
            collect(branch.first, branch.second, delete_node_list);
6257
95.9k
         }
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
6255
65.0k
         {
6256
65.0k
            collect(branch.first, branch.second, delete_node_list);
6257
65.0k
         }
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
6255
30.9k
         {
6256
30.9k
            collect(branch.first, branch.second, delete_node_list);
6257
30.9k
         }
6258
6259
         template <typename NodeSequence>
6260
         void collect(Node*& node,
6261
                      NodeSequence& delete_node_list) const
6262
         {
6263
            collect(node, branch_deletable(node), delete_node_list);
6264
         }
6265
6266
         template <std::size_t N, typename NodeSequence>
6267
         void collect(const nb_pair_t(&branch)[N],
6268
                      NodeSequence& delete_node_list) const
6269
84.1k
         {
6270
252k
            for (std::size_t i = 0; i < N; ++i)
6271
168k
            {
6272
168k
               collect(branch[i].first, branch[i].second, delete_node_list);
6273
168k
            }
6274
84.1k
         }
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
6269
55.8k
         {
6270
167k
            for (std::size_t i = 0; i < N; ++i)
6271
111k
            {
6272
111k
               collect(branch[i].first, branch[i].second, delete_node_list);
6273
111k
            }
6274
55.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
6269
101
         {
6270
404
            for (std::size_t i = 0; i < N; ++i)
6271
303
            {
6272
303
               collect(branch[i].first, branch[i].second, delete_node_list);
6273
303
            }
6274
101
         }
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
6269
28.1k
         {
6270
84.3k
            for (std::size_t i = 0; i < N; ++i)
6271
56.2k
            {
6272
56.2k
               collect(branch[i].first, branch[i].second, delete_node_list);
6273
56.2k
            }
6274
28.1k
         }
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
6269
101
         {
6270
404
            for (std::size_t i = 0; i < N; ++i)
6271
303
            {
6272
303
               collect(branch[i].first, branch[i].second, delete_node_list);
6273
303
            }
6274
101
         }
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
6275
6276
         template <typename Allocator,
6277
                   template <typename, typename> class Sequence,
6278
                   typename NodeSequence>
6279
         void collect(const Sequence<nb_pair_t, Allocator>& branch,
6280
                      NodeSequence& delete_node_list) const
6281
65
         {
6282
551
            for (std::size_t i = 0; i < branch.size(); ++i)
6283
486
            {
6284
486
               collect(branch[i].first, branch[i].second, delete_node_list);
6285
486
            }
6286
65
         }
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
6281
33
         {
6282
280
            for (std::size_t i = 0; i < branch.size(); ++i)
6283
247
            {
6284
247
               collect(branch[i].first, branch[i].second, delete_node_list);
6285
247
            }
6286
33
         }
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
6281
32
         {
6282
271
            for (std::size_t i = 0; i < branch.size(); ++i)
6283
239
            {
6284
239
               collect(branch[i].first, branch[i].second, delete_node_list);
6285
239
            }
6286
32
         }
6287
6288
         template <typename Allocator,
6289
                   template <typename, typename> class Sequence,
6290
                   typename NodeSequence>
6291
         void collect(const Sequence<node_ptr_t, Allocator>& branch_list,
6292
                      NodeSequence& delete_node_list) const
6293
0
         {
6294
0
            for (std::size_t i = 0; i < branch_list.size(); ++i)
6295
0
            {
6296
0
               collect(branch_list[i], branch_deletable(branch_list[i]), delete_node_list);
6297
0
            }
6298
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
6299
6300
         template <typename Boolean,
6301
                   typename AllocatorT,
6302
                   typename AllocatorB,
6303
                   template <typename, typename> class Sequence,
6304
                   typename NodeSequence>
6305
         void collect(const Sequence<node_ptr_t, AllocatorT>& branch_list,
6306
                      const Sequence<Boolean, AllocatorB>& branch_deletable_list,
6307
                      NodeSequence& delete_node_list) const
6308
         {
6309
            for (std::size_t i = 0; i < branch_list.size(); ++i)
6310
            {
6311
               collect(branch_list[i], branch_deletable_list[i], delete_node_list);
6312
            }
6313
         }
6314
      };
6315
6316
      template <typename Type>
6317
      class vector_holder
6318
      {
6319
      private:
6320
6321
         typedef Type value_type;
6322
         typedef value_type* value_ptr;
6323
         typedef const value_ptr const_value_ptr;
6324
         typedef vector_holder<Type> vector_holder_t;
6325
6326
         class vector_holder_base
6327
         {
6328
         public:
6329
6330
            virtual ~vector_holder_base()
6331
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()
6332
6333
            inline value_ptr operator[](const std::size_t& index) const
6334
0
            {
6335
0
               return value_at(index);
6336
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
6337
6338
            inline std::size_t size() const
6339
0
            {
6340
0
               return vector_size();
6341
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
6342
6343
            inline std::size_t base_size() const
6344
0
            {
6345
0
               return vector_base_size();
6346
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
6347
6348
            inline value_ptr data() const
6349
0
            {
6350
0
               return value_at(0);
6351
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
6352
6353
            virtual inline bool rebaseable() const
6354
0
            {
6355
0
               return false;
6356
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
6357
6358
            virtual void set_ref(value_ptr*)
6359
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**)
6360
6361
            virtual void remove_ref(value_ptr*)
6362
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**)
6363
6364
            virtual vector_view<Type>* rebaseable_instance()
6365
0
            {
6366
0
               return reinterpret_cast<vector_view<Type>*>(0);
6367
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()
6368
6369
         protected:
6370
6371
            virtual value_ptr value_at(const std::size_t&) const = 0;
6372
            virtual std::size_t vector_size()              const = 0;
6373
            virtual std::size_t vector_base_size()         const = 0;
6374
         };
6375
6376
         class array_vector_impl exprtk_final : public vector_holder_base
6377
         {
6378
         public:
6379
6380
            array_vector_impl(const Type* vec, const std::size_t& vec_size)
6381
0
            : vec_(vec)
6382
0
            , size_(vec_size)
6383
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&)
6384
6385
         protected:
6386
6387
            value_ptr value_at(const std::size_t& index) const exprtk_override
6388
0
            {
6389
0
               assert(index < size_);
6390
0
               return const_cast<const_value_ptr>(vec_ + index);
6391
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
6392
6393
            std::size_t vector_size() const exprtk_override
6394
0
            {
6395
0
               return size_;
6396
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
6397
6398
            std::size_t vector_base_size() const exprtk_override
6399
0
            {
6400
0
               return vector_size();
6401
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
6402
6403
         private:
6404
6405
            array_vector_impl(const array_vector_impl&) exprtk_delete;
6406
            array_vector_impl& operator=(const array_vector_impl&) exprtk_delete;
6407
6408
            const Type* vec_;
6409
            const std::size_t size_;
6410
         };
6411
6412
         template <typename Allocator,
6413
                   template <typename, typename> class Sequence>
6414
         class sequence_vector_impl exprtk_final : public vector_holder_base
6415
         {
6416
         public:
6417
6418
            typedef Sequence<Type,Allocator> sequence_t;
6419
6420
            explicit sequence_vector_impl(sequence_t& seq)
6421
            : sequence_(seq)
6422
            {}
6423
6424
         protected:
6425
6426
            value_ptr value_at(const std::size_t& index) const exprtk_override
6427
            {
6428
               assert(index < sequence_.size());
6429
               return (&sequence_[index]);
6430
            }
6431
6432
            std::size_t vector_size() const exprtk_override
6433
            {
6434
               return sequence_.size();
6435
            }
6436
6437
            std::size_t vector_base_size() const exprtk_override
6438
            {
6439
               return vector_size();
6440
            }
6441
6442
         private:
6443
6444
            sequence_vector_impl(const sequence_vector_impl&) exprtk_delete;
6445
            sequence_vector_impl& operator=(const sequence_vector_impl&) exprtk_delete;
6446
6447
            sequence_t& sequence_;
6448
         };
6449
6450
         class vector_view_impl exprtk_final : public vector_holder_base
6451
         {
6452
         public:
6453
6454
            typedef exprtk::vector_view<Type> vector_view_t;
6455
6456
            vector_view_impl(vector_view_t& vec_view)
6457
            : vec_view_(vec_view)
6458
            {
6459
               assert(vec_view_.size() > 0);
6460
            }
6461
6462
            void set_ref(value_ptr* ref) exprtk_override
6463
            {
6464
               vec_view_.set_ref(ref);
6465
            }
6466
6467
            void remove_ref(value_ptr* ref) exprtk_override
6468
            {
6469
               vec_view_.remove_ref(ref);
6470
            }
6471
6472
            bool rebaseable() const exprtk_override
6473
            {
6474
               return true;
6475
            }
6476
6477
            vector_view<Type>* rebaseable_instance() exprtk_override
6478
            {
6479
               return &vec_view_;
6480
            }
6481
6482
         protected:
6483
6484
            value_ptr value_at(const std::size_t& index) const exprtk_override
6485
            {
6486
               assert(index < vec_view_.size());
6487
               return (&vec_view_[index]);
6488
            }
6489
6490
            std::size_t vector_size() const exprtk_override
6491
            {
6492
               return vec_view_.size();
6493
            }
6494
6495
            std::size_t vector_base_size() const exprtk_override
6496
            {
6497
               return vec_view_.base_size();
6498
            }
6499
6500
         private:
6501
6502
            vector_view_impl(const vector_view_impl&) exprtk_delete;
6503
            vector_view_impl& operator=(const vector_view_impl&) exprtk_delete;
6504
6505
            vector_view_t& vec_view_;
6506
         };
6507
6508
         class resizable_vector_impl exprtk_final : public vector_holder_base
6509
         {
6510
         public:
6511
6512
            resizable_vector_impl(vector_holder& vec_view_holder,
6513
                                  const Type* vec,
6514
                                  const std::size_t& vec_size)
6515
0
            : vec_(vec)
6516
0
            , size_(vec_size)
6517
0
            , vec_view_holder_(*vec_view_holder.rebaseable_instance())
6518
0
            {
6519
0
               assert(vec_view_holder.rebaseable_instance());
6520
0
               assert(size_ <= vector_base_size());
6521
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&)
6522
6523
            virtual ~resizable_vector_impl()
6524
            {}
6525
6526
         protected:
6527
6528
            value_ptr value_at(const std::size_t& index) const exprtk_override
6529
0
            {
6530
0
               assert(index < vector_size());
6531
0
               return const_cast<const_value_ptr>(vec_ + index);
6532
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
6533
6534
            std::size_t vector_size() const exprtk_override
6535
0
            {
6536
0
               return vec_view_holder_.size();
6537
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
6538
6539
            std::size_t vector_base_size() const exprtk_override
6540
0
            {
6541
0
               return vec_view_holder_.base_size();
6542
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
6543
6544
            bool rebaseable() const exprtk_override
6545
0
            {
6546
0
               return true;
6547
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
6548
6549
            virtual vector_view<Type>* rebaseable_instance() exprtk_override
6550
0
            {
6551
0
               return &vec_view_holder_;
6552
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()
6553
6554
         private:
6555
6556
            resizable_vector_impl(const resizable_vector_impl&) exprtk_delete;
6557
            resizable_vector_impl& operator=(const resizable_vector_impl&) exprtk_delete;
6558
6559
            const Type* vec_;
6560
            const std::size_t size_;
6561
            vector_view<Type>& vec_view_holder_;
6562
         };
6563
6564
      public:
6565
6566
         typedef typename details::vec_data_store<Type> vds_t;
6567
6568
         vector_holder(Type* vec, const std::size_t& vec_size)
6569
0
         : vector_holder_base_(new(buffer)array_vector_impl(vec,vec_size))
6570
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&)
6571
6572
         explicit vector_holder(const vds_t& vds)
6573
0
         : vector_holder_base_(new(buffer)array_vector_impl(vds.data(),vds.size()))
6574
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&)
6575
6576
         template <typename Allocator>
6577
         explicit vector_holder(std::vector<Type,Allocator>& vec)
6578
         : vector_holder_base_(new(buffer)sequence_vector_impl<Allocator,std::vector>(vec))
6579
         {}
6580
6581
         explicit vector_holder(exprtk::vector_view<Type>& vec)
6582
         : vector_holder_base_(new(buffer)vector_view_impl(vec))
6583
         {}
6584
6585
         explicit vector_holder(vector_holder_t& vec_holder, const vds_t& vds)
6586
0
         : vector_holder_base_(new(buffer)resizable_vector_impl(vec_holder, vds.data(), vds.size()))
6587
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&)
6588
6589
         inline value_ptr operator[](const std::size_t& index) const
6590
0
         {
6591
0
            return (*vector_holder_base_)[index];
6592
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
6593
6594
         inline std::size_t size() const
6595
0
         {
6596
0
            return vector_holder_base_->size();
6597
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::size() const
6598
6599
         inline std::size_t base_size() const
6600
0
         {
6601
0
            return vector_holder_base_->base_size();
6602
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::base_size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::base_size() const
6603
6604
         inline value_ptr data() const
6605
0
         {
6606
0
            return vector_holder_base_->data();
6607
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::data() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::data() const
6608
6609
         void set_ref(value_ptr* ref)
6610
0
         {
6611
0
            if (rebaseable())
6612
0
            {
6613
0
               vector_holder_base_->set_ref(ref);
6614
0
            }
6615
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::set_ref(double**)
Unexecuted instantiation: exprtk::details::vector_holder<float>::set_ref(float**)
6616
6617
         void remove_ref(value_ptr* ref)
6618
0
         {
6619
0
            if (rebaseable())
6620
0
            {
6621
0
               vector_holder_base_->remove_ref(ref);
6622
0
            }
6623
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::remove_ref(double**)
Unexecuted instantiation: exprtk::details::vector_holder<float>::remove_ref(float**)
6624
6625
         bool rebaseable() const
6626
0
         {
6627
0
            return vector_holder_base_->rebaseable();
6628
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::rebaseable() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::rebaseable() const
6629
6630
         vector_view<Type>* rebaseable_instance()
6631
0
         {
6632
0
            return vector_holder_base_->rebaseable_instance();
6633
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::rebaseable_instance()
Unexecuted instantiation: exprtk::details::vector_holder<float>::rebaseable_instance()
6634
6635
      private:
6636
6637
         vector_holder(const vector_holder<Type>&) exprtk_delete;
6638
         vector_holder<Type>& operator=(const vector_holder<Type>&) exprtk_delete;
6639
6640
         mutable vector_holder_base* vector_holder_base_;
6641
         uchar_t buffer[64];
6642
      };
6643
6644
      template <typename T>
6645
      class null_node exprtk_final : public expression_node<T>
6646
      {
6647
      public:
6648
6649
         inline T value() const exprtk_override
6650
6
         {
6651
6
            return std::numeric_limits<T>::quiet_NaN();
6652
6
         }
exprtk::details::null_node<double>::value() const
Line
Count
Source
6650
3
         {
6651
3
            return std::numeric_limits<T>::quiet_NaN();
6652
3
         }
exprtk::details::null_node<float>::value() const
Line
Count
Source
6650
3
         {
6651
3
            return std::numeric_limits<T>::quiet_NaN();
6652
3
         }
6653
6654
         inline typename expression_node<T>::node_type type() const exprtk_override
6655
27.4k
         {
6656
27.4k
            return expression_node<T>::e_null;
6657
27.4k
         }
exprtk::details::null_node<double>::type() const
Line
Count
Source
6655
13.7k
         {
6656
13.7k
            return expression_node<T>::e_null;
6657
13.7k
         }
exprtk::details::null_node<float>::type() const
Line
Count
Source
6655
13.7k
         {
6656
13.7k
            return expression_node<T>::e_null;
6657
13.7k
         }
6658
      };
6659
6660
      template <typename T, std::size_t N>
6661
      inline void construct_branch_pair(std::pair<expression_node<T>*,bool> (&branch)[N],
6662
                                        expression_node<T>* b,
6663
                                        const std::size_t& index)
6664
841k
      {
6665
841k
         if (b && (index < N))
6666
168k
         {
6667
168k
            branch[index] = std::make_pair(b,branch_deletable(b));
6668
168k
         }
6669
841k
      }
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
6664
558k
      {
6665
558k
         if (b && (index < N))
6666
111k
         {
6667
111k
            branch[index] = std::make_pair(b,branch_deletable(b));
6668
111k
         }
6669
558k
      }
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
6664
1.01k
      {
6665
1.01k
         if (b && (index < N))
6666
303
         {
6667
303
            branch[index] = std::make_pair(b,branch_deletable(b));
6668
303
         }
6669
1.01k
      }
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
6664
281k
      {
6665
281k
         if (b && (index < N))
6666
56.2k
         {
6667
56.2k
            branch[index] = std::make_pair(b,branch_deletable(b));
6668
56.2k
         }
6669
281k
      }
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
6664
1.01k
      {
6665
1.01k
         if (b && (index < N))
6666
303
         {
6667
303
            branch[index] = std::make_pair(b,branch_deletable(b));
6668
303
         }
6669
1.01k
      }
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&)
6670
6671
      template <typename T>
6672
      inline void construct_branch_pair(std::pair<expression_node<T>*,bool>& branch, expression_node<T>* b)
6673
96.3k
      {
6674
96.3k
         if (b)
6675
96.3k
         {
6676
96.3k
            branch = std::make_pair(b,branch_deletable(b));
6677
96.3k
         }
6678
96.3k
      }
void exprtk::details::construct_branch_pair<double>(std::__1::pair<exprtk::details::expression_node<double>*, bool>&, exprtk::details::expression_node<double>*)
Line
Count
Source
6673
65.2k
      {
6674
65.2k
         if (b)
6675
65.2k
         {
6676
65.2k
            branch = std::make_pair(b,branch_deletable(b));
6677
65.2k
         }
6678
65.2k
      }
void exprtk::details::construct_branch_pair<float>(std::__1::pair<exprtk::details::expression_node<float>*, bool>&, exprtk::details::expression_node<float>*)
Line
Count
Source
6673
31.1k
      {
6674
31.1k
         if (b)
6675
31.1k
         {
6676
31.1k
            branch = std::make_pair(b,branch_deletable(b));
6677
31.1k
         }
6678
31.1k
      }
6679
6680
      template <std::size_t N, typename T>
6681
      inline void init_branches(std::pair<expression_node<T>*,bool> (&branch)[N],
6682
                                expression_node<T>* b0,
6683
                                expression_node<T>* b1 = reinterpret_cast<expression_node<T>*>(0),
6684
                                expression_node<T>* b2 = reinterpret_cast<expression_node<T>*>(0),
6685
                                expression_node<T>* b3 = reinterpret_cast<expression_node<T>*>(0),
6686
                                expression_node<T>* b4 = reinterpret_cast<expression_node<T>*>(0),
6687
                                expression_node<T>* b5 = reinterpret_cast<expression_node<T>*>(0),
6688
                                expression_node<T>* b6 = reinterpret_cast<expression_node<T>*>(0),
6689
                                expression_node<T>* b7 = reinterpret_cast<expression_node<T>*>(0),
6690
                                expression_node<T>* b8 = reinterpret_cast<expression_node<T>*>(0),
6691
                                expression_node<T>* b9 = reinterpret_cast<expression_node<T>*>(0))
6692
84.1k
      {
6693
84.1k
         construct_branch_pair(branch, b0, 0);
6694
84.1k
         construct_branch_pair(branch, b1, 1);
6695
84.1k
         construct_branch_pair(branch, b2, 2);
6696
84.1k
         construct_branch_pair(branch, b3, 3);
6697
84.1k
         construct_branch_pair(branch, b4, 4);
6698
84.1k
         construct_branch_pair(branch, b5, 5);
6699
84.1k
         construct_branch_pair(branch, b6, 6);
6700
84.1k
         construct_branch_pair(branch, b7, 7);
6701
84.1k
         construct_branch_pair(branch, b8, 8);
6702
84.1k
         construct_branch_pair(branch, b9, 9);
6703
84.1k
      }
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
6692
55.8k
      {
6693
55.8k
         construct_branch_pair(branch, b0, 0);
6694
55.8k
         construct_branch_pair(branch, b1, 1);
6695
55.8k
         construct_branch_pair(branch, b2, 2);
6696
55.8k
         construct_branch_pair(branch, b3, 3);
6697
55.8k
         construct_branch_pair(branch, b4, 4);
6698
55.8k
         construct_branch_pair(branch, b5, 5);
6699
55.8k
         construct_branch_pair(branch, b6, 6);
6700
55.8k
         construct_branch_pair(branch, b7, 7);
6701
55.8k
         construct_branch_pair(branch, b8, 8);
6702
55.8k
         construct_branch_pair(branch, b9, 9);
6703
55.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
6692
101
      {
6693
101
         construct_branch_pair(branch, b0, 0);
6694
101
         construct_branch_pair(branch, b1, 1);
6695
101
         construct_branch_pair(branch, b2, 2);
6696
101
         construct_branch_pair(branch, b3, 3);
6697
101
         construct_branch_pair(branch, b4, 4);
6698
101
         construct_branch_pair(branch, b5, 5);
6699
101
         construct_branch_pair(branch, b6, 6);
6700
101
         construct_branch_pair(branch, b7, 7);
6701
101
         construct_branch_pair(branch, b8, 8);
6702
101
         construct_branch_pair(branch, b9, 9);
6703
101
      }
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
6692
28.1k
      {
6693
28.1k
         construct_branch_pair(branch, b0, 0);
6694
28.1k
         construct_branch_pair(branch, b1, 1);
6695
28.1k
         construct_branch_pair(branch, b2, 2);
6696
28.1k
         construct_branch_pair(branch, b3, 3);
6697
28.1k
         construct_branch_pair(branch, b4, 4);
6698
28.1k
         construct_branch_pair(branch, b5, 5);
6699
28.1k
         construct_branch_pair(branch, b6, 6);
6700
28.1k
         construct_branch_pair(branch, b7, 7);
6701
28.1k
         construct_branch_pair(branch, b8, 8);
6702
28.1k
         construct_branch_pair(branch, b9, 9);
6703
28.1k
      }
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
6692
101
      {
6693
101
         construct_branch_pair(branch, b0, 0);
6694
101
         construct_branch_pair(branch, b1, 1);
6695
101
         construct_branch_pair(branch, b2, 2);
6696
101
         construct_branch_pair(branch, b3, 3);
6697
101
         construct_branch_pair(branch, b4, 4);
6698
101
         construct_branch_pair(branch, b5, 5);
6699
101
         construct_branch_pair(branch, b6, 6);
6700
101
         construct_branch_pair(branch, b7, 7);
6701
101
         construct_branch_pair(branch, b8, 8);
6702
101
         construct_branch_pair(branch, b9, 9);
6703
101
      }
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>*)
6704
6705
      template <typename T>
6706
      class null_eq_node exprtk_final : public expression_node<T>
6707
      {
6708
      public:
6709
6710
         typedef expression_node<T>* expression_ptr;
6711
         typedef std::pair<expression_ptr,bool> branch_t;
6712
6713
         explicit null_eq_node(expression_ptr branch, const bool equality = true)
6714
72
         : equality_(equality)
6715
72
         {
6716
72
            construct_branch_pair(branch_, branch);
6717
72
            assert(valid());
6718
72
         }
exprtk::details::null_eq_node<double>::null_eq_node(exprtk::details::expression_node<double>*, bool)
Line
Count
Source
6714
36
         : equality_(equality)
6715
36
         {
6716
36
            construct_branch_pair(branch_, branch);
6717
36
            assert(valid());
6718
36
         }
exprtk::details::null_eq_node<float>::null_eq_node(exprtk::details::expression_node<float>*, bool)
Line
Count
Source
6714
36
         : equality_(equality)
6715
36
         {
6716
36
            construct_branch_pair(branch_, branch);
6717
36
            assert(valid());
6718
36
         }
6719
6720
         inline T value() const exprtk_override
6721
2
         {
6722
2
            const T v = branch_.first->value();
6723
2
            const bool result = details::numeric::is_nan(v);
6724
6725
2
            if (result)
6726
2
               return equality_ ? T(1) : T(0);
6727
0
            else
6728
0
               return equality_ ? T(0) : T(1);
6729
2
         }
exprtk::details::null_eq_node<double>::value() const
Line
Count
Source
6721
1
         {
6722
1
            const T v = branch_.first->value();
6723
1
            const bool result = details::numeric::is_nan(v);
6724
6725
1
            if (result)
6726
1
               return equality_ ? T(1) : T(0);
6727
0
            else
6728
0
               return equality_ ? T(0) : T(1);
6729
1
         }
exprtk::details::null_eq_node<float>::value() const
Line
Count
Source
6721
1
         {
6722
1
            const T v = branch_.first->value();
6723
1
            const bool result = details::numeric::is_nan(v);
6724
6725
1
            if (result)
6726
1
               return equality_ ? T(1) : T(0);
6727
0
            else
6728
0
               return equality_ ? T(0) : T(1);
6729
1
         }
6730
6731
         inline typename expression_node<T>::node_type type() const exprtk_override
6732
1.68k
         {
6733
1.68k
            return expression_node<T>::e_nulleq;
6734
1.68k
         }
exprtk::details::null_eq_node<double>::type() const
Line
Count
Source
6732
844
         {
6733
844
            return expression_node<T>::e_nulleq;
6734
844
         }
exprtk::details::null_eq_node<float>::type() const
Line
Count
Source
6732
844
         {
6733
844
            return expression_node<T>::e_nulleq;
6734
844
         }
6735
6736
         inline expression_node<T>* branch(const std::size_t&) const exprtk_override
6737
0
         {
6738
0
            return branch_.first;
6739
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
6740
6741
         inline bool valid() const exprtk_override
6742
176
         {
6743
176
            return branch_.first;
6744
176
         }
exprtk::details::null_eq_node<double>::valid() const
Line
Count
Source
6742
88
         {
6743
88
            return branch_.first;
6744
88
         }
exprtk::details::null_eq_node<float>::valid() const
Line
Count
Source
6742
88
         {
6743
88
            return branch_.first;
6744
88
         }
6745
6746
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
6747
72
         {
6748
72
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6749
72
         }
exprtk::details::null_eq_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
6747
36
         {
6748
36
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6749
36
         }
exprtk::details::null_eq_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
6747
36
         {
6748
36
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6749
36
         }
6750
6751
         std::size_t node_depth() const exprtk_override
6752
146
         {
6753
146
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6754
146
         }
exprtk::details::null_eq_node<double>::node_depth() const
Line
Count
Source
6752
73
         {
6753
73
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6754
73
         }
exprtk::details::null_eq_node<float>::node_depth() const
Line
Count
Source
6752
73
         {
6753
73
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6754
73
         }
6755
6756
      private:
6757
6758
         bool equality_;
6759
         branch_t branch_;
6760
      };
6761
6762
      template <typename T>
6763
      class literal_node exprtk_final : public expression_node<T>
6764
      {
6765
      public:
6766
6767
         explicit literal_node(const T& v)
6768
177k
         : value_(v)
6769
177k
         {}
exprtk::details::literal_node<double>::literal_node(double const&)
Line
Count
Source
6768
113k
         : value_(v)
6769
113k
         {}
exprtk::details::literal_node<float>::literal_node(float const&)
Line
Count
Source
6768
63.6k
         : value_(v)
6769
63.6k
         {}
6770
6771
         inline T value() const exprtk_override
6772
191k
         {
6773
191k
            return value_;
6774
191k
         }
exprtk::details::literal_node<double>::value() const
Line
Count
Source
6772
124k
         {
6773
124k
            return value_;
6774
124k
         }
exprtk::details::literal_node<float>::value() const
Line
Count
Source
6772
67.0k
         {
6773
67.0k
            return value_;
6774
67.0k
         }
6775
6776
         inline typename expression_node<T>::node_type type() const exprtk_override
6777
2.33M
         {
6778
2.33M
            return expression_node<T>::e_constant;
6779
2.33M
         }
exprtk::details::literal_node<double>::type() const
Line
Count
Source
6777
1.53M
         {
6778
1.53M
            return expression_node<T>::e_constant;
6779
1.53M
         }
exprtk::details::literal_node<float>::type() const
Line
Count
Source
6777
804k
         {
6778
804k
            return expression_node<T>::e_constant;
6779
804k
         }
6780
6781
         inline expression_node<T>* branch(const std::size_t&) const exprtk_override
6782
0
         {
6783
0
            return reinterpret_cast<expression_node<T>*>(0);
6784
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
6785
6786
      private:
6787
6788
         literal_node(const literal_node<T>&) exprtk_delete;
6789
         literal_node<T>& operator=(const literal_node<T>&) exprtk_delete;
6790
6791
         const T value_;
6792
      };
6793
6794
      template <typename T>
6795
      struct range_pack;
6796
6797
      template <typename T>
6798
      struct range_data_type;
6799
6800
      template <typename T>
6801
      class range_interface
6802
      {
6803
      public:
6804
6805
         typedef range_pack<T> range_t;
6806
6807
         virtual ~range_interface()
6808
1.00k
         {}
exprtk::details::range_interface<double>::~range_interface()
Line
Count
Source
6808
504
         {}
exprtk::details::range_interface<float>::~range_interface()
Line
Count
Source
6808
504
         {}
6809
6810
         virtual range_t& range_ref() = 0;
6811
6812
         virtual const range_t& range_ref() const = 0;
6813
      };
6814
6815
      #ifndef exprtk_disable_string_capabilities
6816
      template <typename T>
6817
      class string_base_node
6818
      {
6819
      public:
6820
6821
         typedef range_data_type<T> range_data_type_t;
6822
6823
         virtual ~string_base_node()
6824
1.00k
         {}
exprtk::details::string_base_node<double>::~string_base_node()
Line
Count
Source
6824
504
         {}
exprtk::details::string_base_node<float>::~string_base_node()
Line
Count
Source
6824
504
         {}
6825
6826
         virtual std::string str () const = 0;
6827
6828
         virtual char_cptr   base() const = 0;
6829
6830
         virtual std::size_t size() const = 0;
6831
      };
6832
6833
      template <typename T>
6834
      class string_literal_node exprtk_final
6835
                                : public expression_node <T>
6836
                                , public string_base_node<T>
6837
                                , public range_interface <T>
6838
      {
6839
      public:
6840
6841
         typedef range_pack<T> range_t;
6842
6843
         explicit string_literal_node(const std::string& v)
6844
928
         : value_(v)
6845
928
         {
6846
928
            rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0);
6847
928
            rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size());
6848
928
            rp_.cache.first  = rp_.n0_c.second;
6849
928
            rp_.cache.second = rp_.n1_c.second;
6850
928
         }
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
6844
464
         : value_(v)
6845
464
         {
6846
464
            rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0);
6847
464
            rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size());
6848
464
            rp_.cache.first  = rp_.n0_c.second;
6849
464
            rp_.cache.second = rp_.n1_c.second;
6850
464
         }
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
6844
464
         : value_(v)
6845
464
         {
6846
464
            rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0);
6847
464
            rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size());
6848
464
            rp_.cache.first  = rp_.n0_c.second;
6849
464
            rp_.cache.second = rp_.n1_c.second;
6850
464
         }
6851
6852
         inline T value() const exprtk_override
6853
304
         {
6854
304
            return std::numeric_limits<T>::quiet_NaN();
6855
304
         }
exprtk::details::string_literal_node<double>::value() const
Line
Count
Source
6853
152
         {
6854
152
            return std::numeric_limits<T>::quiet_NaN();
6855
152
         }
exprtk::details::string_literal_node<float>::value() const
Line
Count
Source
6853
152
         {
6854
152
            return std::numeric_limits<T>::quiet_NaN();
6855
152
         }
6856
6857
         inline typename expression_node<T>::node_type type() const exprtk_override
6858
9.60k
         {
6859
9.60k
            return expression_node<T>::e_stringconst;
6860
9.60k
         }
exprtk::details::string_literal_node<double>::type() const
Line
Count
Source
6858
4.80k
         {
6859
4.80k
            return expression_node<T>::e_stringconst;
6860
4.80k
         }
exprtk::details::string_literal_node<float>::type() const
Line
Count
Source
6858
4.80k
         {
6859
4.80k
            return expression_node<T>::e_stringconst;
6860
4.80k
         }
6861
6862
         inline expression_node<T>* branch(const std::size_t&) const exprtk_override
6863
0
         {
6864
0
            return reinterpret_cast<expression_node<T>*>(0);
6865
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
6866
6867
         std::string str() const exprtk_override
6868
324
         {
6869
324
            return value_;
6870
324
         }
exprtk::details::string_literal_node<double>::str() const
Line
Count
Source
6868
162
         {
6869
162
            return value_;
6870
162
         }
exprtk::details::string_literal_node<float>::str() const
Line
Count
Source
6868
162
         {
6869
162
            return value_;
6870
162
         }
6871
6872
         char_cptr base() const exprtk_override
6873
22
         {
6874
22
            return value_.data();
6875
22
         }
exprtk::details::string_literal_node<double>::base() const
Line
Count
Source
6873
11
         {
6874
11
            return value_.data();
6875
11
         }
exprtk::details::string_literal_node<float>::base() const
Line
Count
Source
6873
11
         {
6874
11
            return value_.data();
6875
11
         }
6876
6877
         std::size_t size() const exprtk_override
6878
22
         {
6879
22
            return value_.size();
6880
22
         }
exprtk::details::string_literal_node<double>::size() const
Line
Count
Source
6878
11
         {
6879
11
            return value_.size();
6880
11
         }
exprtk::details::string_literal_node<float>::size() const
Line
Count
Source
6878
11
         {
6879
11
            return value_.size();
6880
11
         }
6881
6882
         range_t& range_ref() exprtk_override
6883
34
         {
6884
34
            return rp_;
6885
34
         }
exprtk::details::string_literal_node<double>::range_ref()
Line
Count
Source
6883
17
         {
6884
17
            return rp_;
6885
17
         }
exprtk::details::string_literal_node<float>::range_ref()
Line
Count
Source
6883
17
         {
6884
17
            return rp_;
6885
17
         }
6886
6887
         const range_t& range_ref() const exprtk_override
6888
0
         {
6889
0
            return rp_;
6890
0
         }
Unexecuted instantiation: exprtk::details::string_literal_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::string_literal_node<float>::range_ref() const
6891
6892
      private:
6893
6894
         string_literal_node(const string_literal_node<T>&) exprtk_delete;
6895
         string_literal_node<T>& operator=(const string_literal_node<T>&) exprtk_delete;
6896
6897
         const std::string value_;
6898
         range_t rp_;
6899
      };
6900
      #endif
6901
6902
      template <typename T>
6903
      class unary_node : public expression_node<T>
6904
      {
6905
      public:
6906
6907
         typedef expression_node<T>* expression_ptr;
6908
         typedef std::pair<expression_ptr,bool> branch_t;
6909
6910
         unary_node(const operator_type& opr, expression_ptr branch)
6911
53.2k
         : operation_(opr)
6912
53.2k
         {
6913
53.2k
            construct_branch_pair(branch_,branch);
6914
53.2k
            assert(valid());
6915
53.2k
         }
exprtk::details::unary_node<double>::unary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*)
Line
Count
Source
6911
30.8k
         : operation_(opr)
6912
30.8k
         {
6913
30.8k
            construct_branch_pair(branch_,branch);
6914
30.8k
            assert(valid());
6915
30.8k
         }
exprtk::details::unary_node<float>::unary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*)
Line
Count
Source
6911
22.4k
         : operation_(opr)
6912
22.4k
         {
6913
22.4k
            construct_branch_pair(branch_,branch);
6914
22.4k
            assert(valid());
6915
22.4k
         }
6916
6917
         inline T value() const exprtk_override
6918
53.2k
         {
6919
53.2k
            return numeric::process<T>
6920
53.2k
                     (operation_,branch_.first->value());
6921
53.2k
         }
exprtk::details::unary_node<double>::value() const
Line
Count
Source
6918
30.8k
         {
6919
30.8k
            return numeric::process<T>
6920
30.8k
                     (operation_,branch_.first->value());
6921
30.8k
         }
exprtk::details::unary_node<float>::value() const
Line
Count
Source
6918
22.4k
         {
6919
22.4k
            return numeric::process<T>
6920
22.4k
                     (operation_,branch_.first->value());
6921
22.4k
         }
6922
6923
         inline typename expression_node<T>::node_type type() const exprtk_override
6924
106k
         {
6925
106k
            return expression_node<T>::e_unary;
6926
106k
         }
exprtk::details::unary_node<double>::type() const
Line
Count
Source
6924
61.6k
         {
6925
61.6k
            return expression_node<T>::e_unary;
6926
61.6k
         }
exprtk::details::unary_node<float>::type() const
Line
Count
Source
6924
44.9k
         {
6925
44.9k
            return expression_node<T>::e_unary;
6926
44.9k
         }
6927
6928
         inline operator_type operation()
6929
         {
6930
            return operation_;
6931
         }
6932
6933
         inline expression_node<T>* branch(const std::size_t&) const exprtk_override
6934
0
         {
6935
0
            return branch_.first;
6936
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
6937
6938
         inline bool valid() const exprtk_override
6939
53.2k
         {
6940
53.2k
            return branch_.first && branch_.first->valid();
6941
53.2k
         }
exprtk::details::unary_node<double>::valid() const
Line
Count
Source
6939
30.8k
         {
6940
30.8k
            return branch_.first && branch_.first->valid();
6941
30.8k
         }
exprtk::details::unary_node<float>::valid() const
Line
Count
Source
6939
22.4k
         {
6940
22.4k
            return branch_.first && branch_.first->valid();
6941
22.4k
         }
6942
6943
         inline void release()
6944
         {
6945
            branch_.second = false;
6946
         }
6947
6948
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
6949
53.2k
         {
6950
53.2k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6951
53.2k
         }
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
6949
30.8k
         {
6950
30.8k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6951
30.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
6949
22.4k
         {
6950
22.4k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6951
22.4k
         }
6952
6953
         std::size_t node_depth() const exprtk_final
6954
106k
         {
6955
106k
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6956
106k
         }
exprtk::details::unary_node<double>::node_depth() const
Line
Count
Source
6954
61.6k
         {
6955
61.6k
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6956
61.6k
         }
exprtk::details::unary_node<float>::node_depth() const
Line
Count
Source
6954
44.9k
         {
6955
44.9k
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6956
44.9k
         }
6957
6958
      private:
6959
6960
         operator_type operation_;
6961
         branch_t branch_;
6962
      };
6963
6964
      template <typename T>
6965
      class binary_node : public expression_node<T>
6966
      {
6967
      public:
6968
6969
         typedef expression_node<T>* expression_ptr;
6970
         typedef std::pair<expression_ptr,bool> branch_t;
6971
6972
         binary_node(const operator_type& opr,
6973
                     expression_ptr branch0,
6974
                     expression_ptr branch1)
6975
10.4k
         : operation_(opr)
6976
10.4k
         {
6977
10.4k
            init_branches<2>(branch_, branch0, branch1);
6978
10.4k
            assert(valid());
6979
10.4k
         }
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
6975
7.91k
         : operation_(opr)
6976
7.91k
         {
6977
7.91k
            init_branches<2>(branch_, branch0, branch1);
6978
7.91k
            assert(valid());
6979
7.91k
         }
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
6975
2.53k
         : operation_(opr)
6976
2.53k
         {
6977
2.53k
            init_branches<2>(branch_, branch0, branch1);
6978
2.53k
            assert(valid());
6979
2.53k
         }
6980
6981
         inline T value() const exprtk_override
6982
8.36k
         {
6983
8.36k
            return numeric::process<T>
6984
8.36k
                   (
6985
8.36k
                      operation_,
6986
8.36k
                      branch_[0].first->value(),
6987
8.36k
                      branch_[1].first->value()
6988
8.36k
                   );
6989
8.36k
         }
exprtk::details::binary_node<double>::value() const
Line
Count
Source
6982
6.85k
         {
6983
6.85k
            return numeric::process<T>
6984
6.85k
                   (
6985
6.85k
                      operation_,
6986
6.85k
                      branch_[0].first->value(),
6987
6.85k
                      branch_[1].first->value()
6988
6.85k
                   );
6989
6.85k
         }
exprtk::details::binary_node<float>::value() const
Line
Count
Source
6982
1.50k
         {
6983
1.50k
            return numeric::process<T>
6984
1.50k
                   (
6985
1.50k
                      operation_,
6986
1.50k
                      branch_[0].first->value(),
6987
1.50k
                      branch_[1].first->value()
6988
1.50k
                   );
6989
1.50k
         }
6990
6991
         inline typename expression_node<T>::node_type type() const exprtk_override
6992
45.3k
         {
6993
45.3k
            return expression_node<T>::e_binary;
6994
45.3k
         }
exprtk::details::binary_node<double>::type() const
Line
Count
Source
6992
28.2k
         {
6993
28.2k
            return expression_node<T>::e_binary;
6994
28.2k
         }
exprtk::details::binary_node<float>::type() const
Line
Count
Source
6992
17.1k
         {
6993
17.1k
            return expression_node<T>::e_binary;
6994
17.1k
         }
6995
6996
         inline operator_type operation()
6997
         {
6998
            return operation_;
6999
         }
7000
7001
         inline expression_node<T>* branch(const std::size_t& index = 0) const exprtk_override
7002
2.80k
         {
7003
2.80k
            assert(index < 2);
7004
2.80k
            return branch_[index].first;
7005
2.80k
         }
exprtk::details::binary_node<double>::branch(unsigned long const&) const
Line
Count
Source
7002
1.41k
         {
7003
1.41k
            assert(index < 2);
7004
1.41k
            return branch_[index].first;
7005
1.41k
         }
exprtk::details::binary_node<float>::branch(unsigned long const&) const
Line
Count
Source
7002
1.38k
         {
7003
1.38k
            assert(index < 2);
7004
1.38k
            return branch_[index].first;
7005
1.38k
         }
7006
7007
         inline bool valid() const exprtk_override
7008
47.0k
         {
7009
47.0k
            return
7010
47.0k
               branch_[0].first && branch_[0].first->valid() &&
7011
47.0k
               branch_[1].first && branch_[1].first->valid() ;
7012
47.0k
         }
exprtk::details::binary_node<double>::valid() const
Line
Count
Source
7008
26.2k
         {
7009
26.2k
            return
7010
26.2k
               branch_[0].first && branch_[0].first->valid() &&
7011
26.2k
               branch_[1].first && branch_[1].first->valid() ;
7012
26.2k
         }
exprtk::details::binary_node<float>::valid() const
Line
Count
Source
7008
20.8k
         {
7009
20.8k
            return
7010
20.8k
               branch_[0].first && branch_[0].first->valid() &&
7011
20.8k
               branch_[1].first && branch_[1].first->valid() ;
7012
20.8k
         }
7013
7014
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7015
10.4k
         {
7016
10.4k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7017
10.4k
         }
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
7015
7.91k
         {
7016
7.91k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7017
7.91k
         }
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
7015
2.53k
         {
7016
2.53k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7017
2.53k
         }
7018
7019
         std::size_t node_depth() const exprtk_final
7020
22.9k
         {
7021
22.9k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7022
22.9k
         }
exprtk::details::binary_node<double>::node_depth() const
Line
Count
Source
7020
16.8k
         {
7021
16.8k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7022
16.8k
         }
exprtk::details::binary_node<float>::node_depth() const
Line
Count
Source
7020
6.09k
         {
7021
6.09k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7022
6.09k
         }
7023
7024
      private:
7025
7026
         operator_type operation_;
7027
         branch_t branch_[2];
7028
      };
7029
7030
      template <typename T, typename Operation>
7031
      class binary_ext_node exprtk_final : public expression_node<T>
7032
      {
7033
      public:
7034
7035
         typedef expression_node<T>* expression_ptr;
7036
         typedef std::pair<expression_ptr,bool> branch_t;
7037
7038
         binary_ext_node(expression_ptr branch0, expression_ptr branch1)
7039
73.5k
         {
7040
73.5k
            init_branches<2>(branch_, branch0, branch1);
7041
73.5k
            assert(valid());
7042
73.5k
         }
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
7039
1.60k
         {
7040
1.60k
            init_branches<2>(branch_, branch0, branch1);
7041
1.60k
            assert(valid());
7042
1.60k
         }
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
7039
1.20k
         {
7040
1.20k
            init_branches<2>(branch_, branch0, branch1);
7041
1.20k
            assert(valid());
7042
1.20k
         }
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
7039
20.6k
         {
7040
20.6k
            init_branches<2>(branch_, branch0, branch1);
7041
20.6k
            assert(valid());
7042
20.6k
         }
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
7039
84
         {
7040
84
            init_branches<2>(branch_, branch0, branch1);
7041
84
            assert(valid());
7042
84
         }
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
7039
105
         {
7040
105
            init_branches<2>(branch_, branch0, branch1);
7041
105
            assert(valid());
7042
105
         }
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
7039
115
         {
7040
115
            init_branches<2>(branch_, branch0, branch1);
7041
115
            assert(valid());
7042
115
         }
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
7039
10.9k
         {
7040
10.9k
            init_branches<2>(branch_, branch0, branch1);
7041
10.9k
            assert(valid());
7042
10.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
7039
64
         {
7040
64
            init_branches<2>(branch_, branch0, branch1);
7041
64
            assert(valid());
7042
64
         }
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
7039
10.2k
         {
7040
10.2k
            init_branches<2>(branch_, branch0, branch1);
7041
10.2k
            assert(valid());
7042
10.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
7039
100
         {
7040
100
            init_branches<2>(branch_, branch0, branch1);
7041
100
            assert(valid());
7042
100
         }
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
7039
1.92k
         {
7040
1.92k
            init_branches<2>(branch_, branch0, branch1);
7041
1.92k
            assert(valid());
7042
1.92k
         }
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
7039
20
         {
7040
20
            init_branches<2>(branch_, branch0, branch1);
7041
20
            assert(valid());
7042
20
         }
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7039
239
         {
7040
239
            init_branches<2>(branch_, branch0, branch1);
7041
239
            assert(valid());
7042
239
         }
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
7039
68
         {
7040
68
            init_branches<2>(branch_, branch0, branch1);
7041
68
            assert(valid());
7042
68
         }
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
7039
190
         {
7040
190
            init_branches<2>(branch_, branch0, branch1);
7041
190
            assert(valid());
7042
190
         }
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
7039
154
         {
7040
154
            init_branches<2>(branch_, branch0, branch1);
7041
154
            assert(valid());
7042
154
         }
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
7039
70
         {
7040
70
            init_branches<2>(branch_, branch0, branch1);
7041
70
            assert(valid());
7042
70
         }
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
7039
66
         {
7040
66
            init_branches<2>(branch_, branch0, branch1);
7041
66
            assert(valid());
7042
66
         }
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
7039
637
         {
7040
637
            init_branches<2>(branch_, branch0, branch1);
7041
637
            assert(valid());
7042
637
         }
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
7039
570
         {
7040
570
            init_branches<2>(branch_, branch0, branch1);
7041
570
            assert(valid());
7042
570
         }
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
7039
20.1k
         {
7040
20.1k
            init_branches<2>(branch_, branch0, branch1);
7041
20.1k
            assert(valid());
7042
20.1k
         }
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
7039
84
         {
7040
84
            init_branches<2>(branch_, branch0, branch1);
7041
84
            assert(valid());
7042
84
         }
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
7039
32
         {
7040
32
            init_branches<2>(branch_, branch0, branch1);
7041
32
            assert(valid());
7042
32
         }
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
7039
114
         {
7040
114
            init_branches<2>(branch_, branch0, branch1);
7041
114
            assert(valid());
7042
114
         }
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
7039
845
         {
7040
845
            init_branches<2>(branch_, branch0, branch1);
7041
845
            assert(valid());
7042
845
         }
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
7039
61
         {
7040
61
            init_branches<2>(branch_, branch0, branch1);
7041
61
            assert(valid());
7042
61
         }
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
7039
315
         {
7040
315
            init_branches<2>(branch_, branch0, branch1);
7041
315
            assert(valid());
7042
315
         }
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
7039
92
         {
7040
92
            init_branches<2>(branch_, branch0, branch1);
7041
92
            assert(valid());
7042
92
         }
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
7039
1.87k
         {
7040
1.87k
            init_branches<2>(branch_, branch0, branch1);
7041
1.87k
            assert(valid());
7042
1.87k
         }
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
7039
16
         {
7040
16
            init_branches<2>(branch_, branch0, branch1);
7041
16
            assert(valid());
7042
16
         }
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7039
239
         {
7040
239
            init_branches<2>(branch_, branch0, branch1);
7041
239
            assert(valid());
7042
239
         }
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
7039
65
         {
7040
65
            init_branches<2>(branch_, branch0, branch1);
7041
65
            assert(valid());
7042
65
         }
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
7039
190
         {
7040
190
            init_branches<2>(branch_, branch0, branch1);
7041
190
            assert(valid());
7042
190
         }
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
7039
154
         {
7040
154
            init_branches<2>(branch_, branch0, branch1);
7041
154
            assert(valid());
7042
154
         }
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
7039
62
         {
7040
62
            init_branches<2>(branch_, branch0, branch1);
7041
62
            assert(valid());
7042
62
         }
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
7039
63
         {
7040
63
            init_branches<2>(branch_, branch0, branch1);
7041
63
            assert(valid());
7042
63
         }
7043
7044
         inline T value() const exprtk_override
7045
1.63k
         {
7046
1.63k
            const T arg0 = branch_[0].first->value();
7047
1.63k
            const T arg1 = branch_[1].first->value();
7048
1.63k
            return Operation::process(arg0,arg1);
7049
1.63k
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::value() const
Line
Count
Source
7045
64
         {
7046
64
            const T arg0 = branch_[0].first->value();
7047
64
            const T arg1 = branch_[1].first->value();
7048
64
            return Operation::process(arg0,arg1);
7049
64
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::value() const
Line
Count
Source
7045
85
         {
7046
85
            const T arg0 = branch_[0].first->value();
7047
85
            const T arg1 = branch_[1].first->value();
7048
85
            return Operation::process(arg0,arg1);
7049
85
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::value() const
Line
Count
Source
7045
107
         {
7046
107
            const T arg0 = branch_[0].first->value();
7047
107
            const T arg1 = branch_[1].first->value();
7048
107
            return Operation::process(arg0,arg1);
7049
107
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::value() const
Line
Count
Source
7045
17
         {
7046
17
            const T arg0 = branch_[0].first->value();
7047
17
            const T arg1 = branch_[1].first->value();
7048
17
            return Operation::process(arg0,arg1);
7049
17
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::value() const
Line
Count
Source
7045
15
         {
7046
15
            const T arg0 = branch_[0].first->value();
7047
15
            const T arg1 = branch_[1].first->value();
7048
15
            return Operation::process(arg0,arg1);
7049
15
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::value() const
Line
Count
Source
7045
5
         {
7046
5
            const T arg0 = branch_[0].first->value();
7047
5
            const T arg1 = branch_[1].first->value();
7048
5
            return Operation::process(arg0,arg1);
7049
5
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::value() const
Line
Count
Source
7045
102
         {
7046
102
            const T arg0 = branch_[0].first->value();
7047
102
            const T arg1 = branch_[1].first->value();
7048
102
            return Operation::process(arg0,arg1);
7049
102
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::value() const
Line
Count
Source
7045
11
         {
7046
11
            const T arg0 = branch_[0].first->value();
7047
11
            const T arg1 = branch_[1].first->value();
7048
11
            return Operation::process(arg0,arg1);
7049
11
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::value() const
Line
Count
Source
7045
101
         {
7046
101
            const T arg0 = branch_[0].first->value();
7047
101
            const T arg1 = branch_[1].first->value();
7048
101
            return Operation::process(arg0,arg1);
7049
101
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::value() const
Line
Count
Source
7045
8
         {
7046
8
            const T arg0 = branch_[0].first->value();
7047
8
            const T arg1 = branch_[1].first->value();
7048
8
            return Operation::process(arg0,arg1);
7049
8
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::value() const
Line
Count
Source
7045
220
         {
7046
220
            const T arg0 = branch_[0].first->value();
7047
220
            const T arg1 = branch_[1].first->value();
7048
220
            return Operation::process(arg0,arg1);
7049
220
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::value() const
Line
Count
Source
7045
4
         {
7046
4
            const T arg0 = branch_[0].first->value();
7047
4
            const T arg1 = branch_[1].first->value();
7048
4
            return Operation::process(arg0,arg1);
7049
4
         }
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::value() const
Line
Count
Source
7045
61
         {
7046
61
            const T arg0 = branch_[0].first->value();
7047
61
            const T arg1 = branch_[1].first->value();
7048
61
            return Operation::process(arg0,arg1);
7049
61
         }
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::value() const
Line
Count
Source
7045
17
         {
7046
17
            const T arg0 = branch_[0].first->value();
7047
17
            const T arg1 = branch_[1].first->value();
7048
17
            return Operation::process(arg0,arg1);
7049
17
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::value() const
Line
Count
Source
7045
6
         {
7046
6
            const T arg0 = branch_[0].first->value();
7047
6
            const T arg1 = branch_[1].first->value();
7048
6
            return Operation::process(arg0,arg1);
7049
6
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::value() const
Line
Count
Source
7045
8
         {
7046
8
            const T arg0 = branch_[0].first->value();
7047
8
            const T arg1 = branch_[1].first->value();
7048
8
            return Operation::process(arg0,arg1);
7049
8
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::value() const
Line
Count
Source
7045
4
         {
7046
4
            const T arg0 = branch_[0].first->value();
7047
4
            const T arg1 = branch_[1].first->value();
7048
4
            return Operation::process(arg0,arg1);
7049
4
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::value() const
Line
Count
Source
7045
6
         {
7046
6
            const T arg0 = branch_[0].first->value();
7047
6
            const T arg1 = branch_[1].first->value();
7048
6
            return Operation::process(arg0,arg1);
7049
6
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::value() const
Line
Count
Source
7045
60
         {
7046
60
            const T arg0 = branch_[0].first->value();
7047
60
            const T arg1 = branch_[1].first->value();
7048
60
            return Operation::process(arg0,arg1);
7049
60
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::value() const
Line
Count
Source
7045
81
         {
7046
81
            const T arg0 = branch_[0].first->value();
7047
81
            const T arg1 = branch_[1].first->value();
7048
81
            return Operation::process(arg0,arg1);
7049
81
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::value() const
Line
Count
Source
7045
105
         {
7046
105
            const T arg0 = branch_[0].first->value();
7047
105
            const T arg1 = branch_[1].first->value();
7048
105
            return Operation::process(arg0,arg1);
7049
105
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::value() const
Line
Count
Source
7045
17
         {
7046
17
            const T arg0 = branch_[0].first->value();
7047
17
            const T arg1 = branch_[1].first->value();
7048
17
            return Operation::process(arg0,arg1);
7049
17
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::value() const
Line
Count
Source
7045
14
         {
7046
14
            const T arg0 = branch_[0].first->value();
7047
14
            const T arg1 = branch_[1].first->value();
7048
14
            return Operation::process(arg0,arg1);
7049
14
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::value() const
Line
Count
Source
7045
4
         {
7046
4
            const T arg0 = branch_[0].first->value();
7047
4
            const T arg1 = branch_[1].first->value();
7048
4
            return Operation::process(arg0,arg1);
7049
4
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::value() const
Line
Count
Source
7045
99
         {
7046
99
            const T arg0 = branch_[0].first->value();
7047
99
            const T arg1 = branch_[1].first->value();
7048
99
            return Operation::process(arg0,arg1);
7049
99
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::value() const
Line
Count
Source
7045
9
         {
7046
9
            const T arg0 = branch_[0].first->value();
7047
9
            const T arg1 = branch_[1].first->value();
7048
9
            return Operation::process(arg0,arg1);
7049
9
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::value() const
Line
Count
Source
7045
99
         {
7046
99
            const T arg0 = branch_[0].first->value();
7047
99
            const T arg1 = branch_[1].first->value();
7048
99
            return Operation::process(arg0,arg1);
7049
99
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::value() const
Line
Count
Source
7045
7
         {
7046
7
            const T arg0 = branch_[0].first->value();
7047
7
            const T arg1 = branch_[1].first->value();
7048
7
            return Operation::process(arg0,arg1);
7049
7
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::value() const
Line
Count
Source
7045
200
         {
7046
200
            const T arg0 = branch_[0].first->value();
7047
200
            const T arg1 = branch_[1].first->value();
7048
200
            return Operation::process(arg0,arg1);
7049
200
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::value() const
Line
Count
Source
7045
3
         {
7046
3
            const T arg0 = branch_[0].first->value();
7047
3
            const T arg1 = branch_[1].first->value();
7048
3
            return Operation::process(arg0,arg1);
7049
3
         }
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::value() const
Line
Count
Source
7045
61
         {
7046
61
            const T arg0 = branch_[0].first->value();
7047
61
            const T arg1 = branch_[1].first->value();
7048
61
            return Operation::process(arg0,arg1);
7049
61
         }
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::value() const
Line
Count
Source
7045
17
         {
7046
17
            const T arg0 = branch_[0].first->value();
7047
17
            const T arg1 = branch_[1].first->value();
7048
17
            return Operation::process(arg0,arg1);
7049
17
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::value() const
Line
Count
Source
7045
6
         {
7046
6
            const T arg0 = branch_[0].first->value();
7047
6
            const T arg1 = branch_[1].first->value();
7048
6
            return Operation::process(arg0,arg1);
7049
6
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::value() const
Line
Count
Source
7045
8
         {
7046
8
            const T arg0 = branch_[0].first->value();
7047
8
            const T arg1 = branch_[1].first->value();
7048
8
            return Operation::process(arg0,arg1);
7049
8
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::value() const
Line
Count
Source
7045
1
         {
7046
1
            const T arg0 = branch_[0].first->value();
7047
1
            const T arg1 = branch_[1].first->value();
7048
1
            return Operation::process(arg0,arg1);
7049
1
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::value() const
Line
Count
Source
7045
4
         {
7046
4
            const T arg0 = branch_[0].first->value();
7047
4
            const T arg1 = branch_[1].first->value();
7048
4
            return Operation::process(arg0,arg1);
7049
4
         }
7050
7051
         inline typename expression_node<T>::node_type type() const exprtk_override
7052
2.28M
         {
7053
2.28M
            return expression_node<T>::e_binary_ext;
7054
2.28M
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::type() const
Line
Count
Source
7052
42.9k
         {
7053
42.9k
            return expression_node<T>::e_binary_ext;
7054
42.9k
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::type() const
Line
Count
Source
7052
30.5k
         {
7053
30.5k
            return expression_node<T>::e_binary_ext;
7054
30.5k
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::type() const
Line
Count
Source
7052
696k
         {
7053
696k
            return expression_node<T>::e_binary_ext;
7054
696k
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::type() const
Line
Count
Source
7052
1.13k
         {
7053
1.13k
            return expression_node<T>::e_binary_ext;
7054
1.13k
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::type() const
Line
Count
Source
7052
2.80k
         {
7053
2.80k
            return expression_node<T>::e_binary_ext;
7054
2.80k
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::type() const
Line
Count
Source
7052
3.31k
         {
7053
3.31k
            return expression_node<T>::e_binary_ext;
7054
3.31k
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::type() const
Line
Count
Source
7052
319k
         {
7053
319k
            return expression_node<T>::e_binary_ext;
7054
319k
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::type() const
Line
Count
Source
7052
1.37k
         {
7053
1.37k
            return expression_node<T>::e_binary_ext;
7054
1.37k
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::type() const
Line
Count
Source
7052
300k
         {
7053
300k
            return expression_node<T>::e_binary_ext;
7054
300k
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::type() const
Line
Count
Source
7052
2.44k
         {
7053
2.44k
            return expression_node<T>::e_binary_ext;
7054
2.44k
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::type() const
Line
Count
Source
7052
50.0k
         {
7053
50.0k
            return expression_node<T>::e_binary_ext;
7054
50.0k
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::type() const
Line
Count
Source
7052
524
         {
7053
524
            return expression_node<T>::e_binary_ext;
7054
524
         }
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::type() const
Line
Count
Source
7052
5.96k
         {
7053
5.96k
            return expression_node<T>::e_binary_ext;
7054
5.96k
         }
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::type() const
Line
Count
Source
7052
1.58k
         {
7053
1.58k
            return expression_node<T>::e_binary_ext;
7054
1.58k
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::type() const
Line
Count
Source
7052
4.82k
         {
7053
4.82k
            return expression_node<T>::e_binary_ext;
7054
4.82k
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::type() const
Line
Count
Source
7052
3.64k
         {
7053
3.64k
            return expression_node<T>::e_binary_ext;
7054
3.64k
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::type() const
Line
Count
Source
7052
1.13k
         {
7053
1.13k
            return expression_node<T>::e_binary_ext;
7054
1.13k
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::type() const
Line
Count
Source
7052
1.06k
         {
7053
1.06k
            return expression_node<T>::e_binary_ext;
7054
1.06k
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::type() const
Line
Count
Source
7052
17.7k
         {
7053
17.7k
            return expression_node<T>::e_binary_ext;
7054
17.7k
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::type() const
Line
Count
Source
7052
14.5k
         {
7053
14.5k
            return expression_node<T>::e_binary_ext;
7054
14.5k
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::type() const
Line
Count
Source
7052
682k
         {
7053
682k
            return expression_node<T>::e_binary_ext;
7054
682k
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::type() const
Line
Count
Source
7052
1.13k
         {
7053
1.13k
            return expression_node<T>::e_binary_ext;
7054
1.13k
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::type() const
Line
Count
Source
7052
578
         {
7053
578
            return expression_node<T>::e_binary_ext;
7054
578
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::type() const
Line
Count
Source
7052
3.28k
         {
7053
3.28k
            return expression_node<T>::e_binary_ext;
7054
3.28k
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::type() const
Line
Count
Source
7052
18.6k
         {
7053
18.6k
            return expression_node<T>::e_binary_ext;
7054
18.6k
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::type() const
Line
Count
Source
7052
1.28k
         {
7053
1.28k
            return expression_node<T>::e_binary_ext;
7054
1.28k
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::type() const
Line
Count
Source
7052
8.11k
         {
7053
8.11k
            return expression_node<T>::e_binary_ext;
7054
8.11k
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::type() const
Line
Count
Source
7052
2.33k
         {
7053
2.33k
            return expression_node<T>::e_binary_ext;
7054
2.33k
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::type() const
Line
Count
Source
7052
49.0k
         {
7053
49.0k
            return expression_node<T>::e_binary_ext;
7054
49.0k
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::type() const
Line
Count
Source
7052
414
         {
7053
414
            return expression_node<T>::e_binary_ext;
7054
414
         }
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::type() const
Line
Count
Source
7052
5.96k
         {
7053
5.96k
            return expression_node<T>::e_binary_ext;
7054
5.96k
         }
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::type() const
Line
Count
Source
7052
1.51k
         {
7053
1.51k
            return expression_node<T>::e_binary_ext;
7054
1.51k
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::type() const
Line
Count
Source
7052
4.82k
         {
7053
4.82k
            return expression_node<T>::e_binary_ext;
7054
4.82k
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::type() const
Line
Count
Source
7052
3.64k
         {
7053
3.64k
            return expression_node<T>::e_binary_ext;
7054
3.64k
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::type() const
Line
Count
Source
7052
975
         {
7053
975
            return expression_node<T>::e_binary_ext;
7054
975
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::type() const
Line
Count
Source
7052
1.03k
         {
7053
1.03k
            return expression_node<T>::e_binary_ext;
7054
1.03k
         }
7055
7056
         inline operator_type operation()
7057
         {
7058
            return Operation::operation();
7059
         }
7060
7061
         inline expression_node<T>* branch(const std::size_t& index = 0) const exprtk_override
7062
0
         {
7063
0
            assert(index < 2);
7064
0
            return branch_[index].first;
7065
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
7066
7067
         inline bool valid() const exprtk_override
7068
691M
         {
7069
691M
            return
7070
691M
               branch_[0].first && branch_[0].first->valid() &&
7071
691M
               branch_[1].first && branch_[1].first->valid() ;
7072
691M
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::valid() const
Line
Count
Source
7068
13.5M
         {
7069
13.5M
            return
7070
13.5M
               branch_[0].first && branch_[0].first->valid() &&
7071
13.5M
               branch_[1].first && branch_[1].first->valid() ;
7072
13.5M
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::valid() const
Line
Count
Source
7068
8.81M
         {
7069
8.81M
            return
7070
8.81M
               branch_[0].first && branch_[0].first->valid() &&
7071
8.81M
               branch_[1].first && branch_[1].first->valid() ;
7072
8.81M
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::valid() const
Line
Count
Source
7068
196M
         {
7069
196M
            return
7070
196M
               branch_[0].first && branch_[0].first->valid() &&
7071
196M
               branch_[1].first && branch_[1].first->valid() ;
7072
196M
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::valid() const
Line
Count
Source
7068
746
         {
7069
746
            return
7070
746
               branch_[0].first && branch_[0].first->valid() &&
7071
746
               branch_[1].first && branch_[1].first->valid() ;
7072
746
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::valid() const
Line
Count
Source
7068
962k
         {
7069
962k
            return
7070
962k
               branch_[0].first && branch_[0].first->valid() &&
7071
962k
               branch_[1].first && branch_[1].first->valid() ;
7072
962k
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::valid() const
Line
Count
Source
7068
1.79k
         {
7069
1.79k
            return
7070
1.79k
               branch_[0].first && branch_[0].first->valid() &&
7071
1.79k
               branch_[1].first && branch_[1].first->valid() ;
7072
1.79k
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::valid() const
Line
Count
Source
7068
142M
         {
7069
142M
            return
7070
142M
               branch_[0].first && branch_[0].first->valid() &&
7071
142M
               branch_[1].first && branch_[1].first->valid() ;
7072
142M
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::valid() const
Line
Count
Source
7068
650
         {
7069
650
            return
7070
650
               branch_[0].first && branch_[0].first->valid() &&
7071
650
               branch_[1].first && branch_[1].first->valid() ;
7072
650
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::valid() const
Line
Count
Source
7068
139M
         {
7069
139M
            return
7070
139M
               branch_[0].first && branch_[0].first->valid() &&
7071
139M
               branch_[1].first && branch_[1].first->valid() ;
7072
139M
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::valid() const
Line
Count
Source
7068
6.80k
         {
7069
6.80k
            return
7070
6.80k
               branch_[0].first && branch_[0].first->valid() &&
7071
6.80k
               branch_[1].first && branch_[1].first->valid() ;
7072
6.80k
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::valid() const
Line
Count
Source
7068
75.7k
         {
7069
75.7k
            return
7070
75.7k
               branch_[0].first && branch_[0].first->valid() &&
7071
75.7k
               branch_[1].first && branch_[1].first->valid() ;
7072
75.7k
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::valid() const
Line
Count
Source
7068
131
         {
7069
131
            return
7070
131
               branch_[0].first && branch_[0].first->valid() &&
7071
131
               branch_[1].first && branch_[1].first->valid() ;
7072
131
         }
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::valid() const
Line
Count
Source
7068
2.10k
         {
7069
2.10k
            return
7070
2.10k
               branch_[0].first && branch_[0].first->valid() &&
7071
2.10k
               branch_[1].first && branch_[1].first->valid() ;
7072
2.10k
         }
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::valid() const
Line
Count
Source
7068
631
         {
7069
631
            return
7070
631
               branch_[0].first && branch_[0].first->valid() &&
7071
631
               branch_[1].first && branch_[1].first->valid() ;
7072
631
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::valid() const
Line
Count
Source
7068
3.31k
         {
7069
3.31k
            return
7070
3.31k
               branch_[0].first && branch_[0].first->valid() &&
7071
3.31k
               branch_[1].first && branch_[1].first->valid() ;
7072
3.31k
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::valid() const
Line
Count
Source
7068
5.63k
         {
7069
5.63k
            return
7070
5.63k
               branch_[0].first && branch_[0].first->valid() &&
7071
5.63k
               branch_[1].first && branch_[1].first->valid() ;
7072
5.63k
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::valid() const
Line
Count
Source
7068
350
         {
7069
350
            return
7070
350
               branch_[0].first && branch_[0].first->valid() &&
7071
350
               branch_[1].first && branch_[1].first->valid() ;
7072
350
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::valid() const
Line
Count
Source
7068
1.20k
         {
7069
1.20k
            return
7070
1.20k
               branch_[0].first && branch_[0].first->valid() &&
7071
1.20k
               branch_[1].first && branch_[1].first->valid() ;
7072
1.20k
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::valid() const
Line
Count
Source
7068
24.7k
         {
7069
24.7k
            return
7070
24.7k
               branch_[0].first && branch_[0].first->valid() &&
7071
24.7k
               branch_[1].first && branch_[1].first->valid() ;
7072
24.7k
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::valid() const
Line
Count
Source
7068
16.3k
         {
7069
16.3k
            return
7070
16.3k
               branch_[0].first && branch_[0].first->valid() &&
7071
16.3k
               branch_[1].first && branch_[1].first->valid() ;
7072
16.3k
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::valid() const
Line
Count
Source
7068
189M
         {
7069
189M
            return
7070
189M
               branch_[0].first && branch_[0].first->valid() &&
7071
189M
               branch_[1].first && branch_[1].first->valid() ;
7072
189M
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::valid() const
Line
Count
Source
7068
746
         {
7069
746
            return
7070
746
               branch_[0].first && branch_[0].first->valid() &&
7071
746
               branch_[1].first && branch_[1].first->valid() ;
7072
746
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::valid() const
Line
Count
Source
7068
507
         {
7069
507
            return
7070
507
               branch_[0].first && branch_[0].first->valid() &&
7071
507
               branch_[1].first && branch_[1].first->valid() ;
7072
507
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::valid() const
Line
Count
Source
7068
1.78k
         {
7069
1.78k
            return
7070
1.78k
               branch_[0].first && branch_[0].first->valid() &&
7071
1.78k
               branch_[1].first && branch_[1].first->valid() ;
7072
1.78k
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::valid() const
Line
Count
Source
7068
35.7k
         {
7069
35.7k
            return
7070
35.7k
               branch_[0].first && branch_[0].first->valid() &&
7071
35.7k
               branch_[1].first && branch_[1].first->valid() ;
7072
35.7k
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::valid() const
Line
Count
Source
7068
636
         {
7069
636
            return
7070
636
               branch_[0].first && branch_[0].first->valid() &&
7071
636
               branch_[1].first && branch_[1].first->valid() ;
7072
636
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::valid() const
Line
Count
Source
7068
10.3k
         {
7069
10.3k
            return
7070
10.3k
               branch_[0].first && branch_[0].first->valid() &&
7071
10.3k
               branch_[1].first && branch_[1].first->valid() ;
7072
10.3k
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::valid() const
Line
Count
Source
7068
6.74k
         {
7069
6.74k
            return
7070
6.74k
               branch_[0].first && branch_[0].first->valid() &&
7071
6.74k
               branch_[1].first && branch_[1].first->valid() ;
7072
6.74k
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::valid() const
Line
Count
Source
7068
75.3k
         {
7069
75.3k
            return
7070
75.3k
               branch_[0].first && branch_[0].first->valid() &&
7071
75.3k
               branch_[1].first && branch_[1].first->valid() ;
7072
75.3k
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::valid() const
Line
Count
Source
7068
115
         {
7069
115
            return
7070
115
               branch_[0].first && branch_[0].first->valid() &&
7071
115
               branch_[1].first && branch_[1].first->valid() ;
7072
115
         }
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::valid() const
Line
Count
Source
7068
2.10k
         {
7069
2.10k
            return
7070
2.10k
               branch_[0].first && branch_[0].first->valid() &&
7071
2.10k
               branch_[1].first && branch_[1].first->valid() ;
7072
2.10k
         }
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::valid() const
Line
Count
Source
7068
618
         {
7069
618
            return
7070
618
               branch_[0].first && branch_[0].first->valid() &&
7071
618
               branch_[1].first && branch_[1].first->valid() ;
7072
618
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::valid() const
Line
Count
Source
7068
3.31k
         {
7069
3.31k
            return
7070
3.31k
               branch_[0].first && branch_[0].first->valid() &&
7071
3.31k
               branch_[1].first && branch_[1].first->valid() ;
7072
3.31k
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::valid() const
Line
Count
Source
7068
5.63k
         {
7069
5.63k
            return
7070
5.63k
               branch_[0].first && branch_[0].first->valid() &&
7071
5.63k
               branch_[1].first && branch_[1].first->valid() ;
7072
5.63k
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::valid() const
Line
Count
Source
7068
324
         {
7069
324
            return
7070
324
               branch_[0].first && branch_[0].first->valid() &&
7071
324
               branch_[1].first && branch_[1].first->valid() ;
7072
324
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::valid() const
Line
Count
Source
7068
1.19k
         {
7069
1.19k
            return
7070
1.19k
               branch_[0].first && branch_[0].first->valid() &&
7071
1.19k
               branch_[1].first && branch_[1].first->valid() ;
7072
1.19k
         }
7073
7074
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7075
73.5k
         {
7076
73.5k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
73.5k
         }
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
7075
1.60k
         {
7076
1.60k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
1.60k
         }
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
7075
1.20k
         {
7076
1.20k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
1.20k
         }
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
7075
20.6k
         {
7076
20.6k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
20.6k
         }
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
7075
84
         {
7076
84
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
84
         }
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
7075
105
         {
7076
105
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
105
         }
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
7075
115
         {
7076
115
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
115
         }
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
7075
10.9k
         {
7076
10.9k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
10.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
7075
64
         {
7076
64
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
64
         }
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
7075
10.2k
         {
7076
10.2k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
10.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
7075
100
         {
7076
100
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
100
         }
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
7075
1.92k
         {
7076
1.92k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
1.92k
         }
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
7075
20
         {
7076
20
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
20
         }
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>**> >&)
Line
Count
Source
7075
239
         {
7076
239
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
239
         }
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
7075
68
         {
7076
68
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
68
         }
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
7075
190
         {
7076
190
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
190
         }
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
7075
154
         {
7076
154
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
154
         }
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
7075
70
         {
7076
70
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
70
         }
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
7075
66
         {
7076
66
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
66
         }
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
7075
637
         {
7076
637
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
637
         }
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
7075
570
         {
7076
570
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
570
         }
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
7075
20.1k
         {
7076
20.1k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
20.1k
         }
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
7075
84
         {
7076
84
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
84
         }
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
7075
32
         {
7076
32
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
32
         }
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
7075
114
         {
7076
114
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
114
         }
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
7075
845
         {
7076
845
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
845
         }
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
7075
61
         {
7076
61
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
61
         }
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
7075
315
         {
7076
315
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
315
         }
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
7075
92
         {
7076
92
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
92
         }
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
7075
1.87k
         {
7076
1.87k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
1.87k
         }
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
7075
16
         {
7076
16
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
16
         }
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>**> >&)
Line
Count
Source
7075
239
         {
7076
239
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
239
         }
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
7075
65
         {
7076
65
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
65
         }
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
7075
190
         {
7076
190
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
190
         }
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
7075
154
         {
7076
154
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
154
         }
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
7075
62
         {
7076
62
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
62
         }
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
7075
63
         {
7076
63
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7077
63
         }
7078
7079
         std::size_t node_depth() const exprtk_override
7080
150k
         {
7081
150k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
150k
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::node_depth() const
Line
Count
Source
7080
3.68k
         {
7081
3.68k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
3.68k
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::node_depth() const
Line
Count
Source
7080
3.32k
         {
7081
3.32k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
3.32k
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::node_depth() const
Line
Count
Source
7080
41.5k
         {
7081
41.5k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
41.5k
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::node_depth() const
Line
Count
Source
7080
196
         {
7081
196
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
196
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::node_depth() const
Line
Count
Source
7080
216
         {
7081
216
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
216
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::node_depth() const
Line
Count
Source
7080
348
         {
7081
348
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
348
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::node_depth() const
Line
Count
Source
7080
22.1k
         {
7081
22.1k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
22.1k
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::node_depth() const
Line
Count
Source
7080
167
         {
7081
167
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
167
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::node_depth() const
Line
Count
Source
7080
20.4k
         {
7081
20.4k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
20.4k
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::node_depth() const
Line
Count
Source
7080
208
         {
7081
208
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
208
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::node_depth() const
Line
Count
Source
7080
3.98k
         {
7081
3.98k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
3.98k
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::node_depth() const
Line
Count
Source
7080
44
         {
7081
44
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
44
         }
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::node_depth() const
Line
Count
Source
7080
535
         {
7081
535
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
535
         }
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::node_depth() const
Line
Count
Source
7080
159
         {
7081
159
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
159
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::node_depth() const
Line
Count
Source
7080
404
         {
7081
404
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
404
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::node_depth() const
Line
Count
Source
7080
316
         {
7081
316
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
316
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::node_depth() const
Line
Count
Source
7080
178
         {
7081
178
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
178
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::node_depth() const
Line
Count
Source
7080
145
         {
7081
145
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
145
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::node_depth() const
Line
Count
Source
7080
1.63k
         {
7081
1.63k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
1.63k
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::node_depth() const
Line
Count
Source
7080
1.42k
         {
7081
1.42k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
1.42k
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::node_depth() const
Line
Count
Source
7080
40.5k
         {
7081
40.5k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
40.5k
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::node_depth() const
Line
Count
Source
7080
196
         {
7081
196
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
196
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::node_depth() const
Line
Count
Source
7080
66
         {
7081
66
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
66
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::node_depth() const
Line
Count
Source
7080
345
         {
7081
345
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
345
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::node_depth() const
Line
Count
Source
7080
1.89k
         {
7081
1.89k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
1.89k
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::node_depth() const
Line
Count
Source
7080
161
         {
7081
161
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
161
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::node_depth() const
Line
Count
Source
7080
656
         {
7081
656
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
656
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::node_depth() const
Line
Count
Source
7080
186
         {
7081
186
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
186
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::node_depth() const
Line
Count
Source
7080
3.88k
         {
7081
3.88k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
3.88k
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::node_depth() const
Line
Count
Source
7080
34
         {
7081
34
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
34
         }
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::node_depth() const
Line
Count
Source
7080
535
         {
7081
535
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
535
         }
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::node_depth() const
Line
Count
Source
7080
153
         {
7081
153
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
153
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::node_depth() const
Line
Count
Source
7080
404
         {
7081
404
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
404
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::node_depth() const
Line
Count
Source
7080
316
         {
7081
316
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
316
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::node_depth() const
Line
Count
Source
7080
161
         {
7081
161
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
161
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::node_depth() const
Line
Count
Source
7080
138
         {
7081
138
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7082
138
         }
7083
7084
      protected:
7085
7086
         branch_t branch_[2];
7087
      };
7088
7089
      template <typename T>
7090
      class trinary_node : public expression_node<T>
7091
      {
7092
      public:
7093
7094
         typedef expression_node<T>* expression_ptr;
7095
         typedef std::pair<expression_ptr,bool> branch_t;
7096
7097
         trinary_node(const operator_type& opr,
7098
                      expression_ptr branch0,
7099
                      expression_ptr branch1,
7100
                      expression_ptr branch2)
7101
202
         : operation_(opr)
7102
202
         {
7103
202
            init_branches<3>(branch_, branch0, branch1, branch2);
7104
202
            assert(valid());
7105
202
         }
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
7101
101
         : operation_(opr)
7102
101
         {
7103
101
            init_branches<3>(branch_, branch0, branch1, branch2);
7104
101
            assert(valid());
7105
101
         }
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
7101
101
         : operation_(opr)
7102
101
         {
7103
101
            init_branches<3>(branch_, branch0, branch1, branch2);
7104
101
            assert(valid());
7105
101
         }
7106
7107
         inline T value() const exprtk_override
7108
0
         {
7109
0
            const T arg0 = branch_[0].first->value();
7110
0
            const T arg1 = branch_[1].first->value();
7111
0
            const T arg2 = branch_[2].first->value();
7112
7113
0
            switch (operation_)
7114
0
            {
7115
0
               case e_inrange : return (arg1 < arg0) ? T(0) : ((arg1 > arg2) ? T(0) : T(1));
7116
7117
0
               case e_clamp   : return (arg1 < arg0) ? arg0 : (arg1 > arg2 ? arg2 : arg1);
7118
7119
0
               case e_iclamp  : if ((arg1 <= arg0) || (arg1 >= arg2))
7120
0
                                   return arg1;
7121
0
                                else
7122
0
                                   return ((T(2) * arg1  <= (arg2 + arg0)) ? arg0 : arg2);
7123
7124
0
               default        : exprtk_debug(("trinary_node::value() - Error: Invalid operation\n"));
7125
0
                                return std::numeric_limits<T>::quiet_NaN();
7126
0
            }
7127
0
         }
Unexecuted instantiation: exprtk::details::trinary_node<double>::value() const
Unexecuted instantiation: exprtk::details::trinary_node<float>::value() const
7128
7129
         inline typename expression_node<T>::node_type type() const exprtk_override
7130
6.06k
         {
7131
6.06k
            return expression_node<T>::e_trinary;
7132
6.06k
         }
exprtk::details::trinary_node<double>::type() const
Line
Count
Source
7130
3.03k
         {
7131
3.03k
            return expression_node<T>::e_trinary;
7132
3.03k
         }
exprtk::details::trinary_node<float>::type() const
Line
Count
Source
7130
3.03k
         {
7131
3.03k
            return expression_node<T>::e_trinary;
7132
3.03k
         }
7133
7134
         inline bool valid() const exprtk_override
7135
3.02k
         {
7136
3.02k
            return
7137
3.02k
               branch_[0].first && branch_[0].first->valid() &&
7138
3.02k
               branch_[1].first && branch_[1].first->valid() &&
7139
3.02k
               branch_[2].first && branch_[2].first->valid() ;
7140
3.02k
         }
exprtk::details::trinary_node<double>::valid() const
Line
Count
Source
7135
1.51k
         {
7136
1.51k
            return
7137
1.51k
               branch_[0].first && branch_[0].first->valid() &&
7138
1.51k
               branch_[1].first && branch_[1].first->valid() &&
7139
1.51k
               branch_[2].first && branch_[2].first->valid() ;
7140
1.51k
         }
exprtk::details::trinary_node<float>::valid() const
Line
Count
Source
7135
1.51k
         {
7136
1.51k
            return
7137
1.51k
               branch_[0].first && branch_[0].first->valid() &&
7138
1.51k
               branch_[1].first && branch_[1].first->valid() &&
7139
1.51k
               branch_[2].first && branch_[2].first->valid() ;
7140
1.51k
         }
7141
7142
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7143
202
         {
7144
202
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7145
202
         }
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
7143
101
         {
7144
101
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7145
101
         }
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
7143
101
         {
7144
101
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7145
101
         }
7146
7147
         std::size_t node_depth() const exprtk_override exprtk_final
7148
606
         {
7149
606
            return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_);
7150
606
         }
exprtk::details::trinary_node<double>::node_depth() const
Line
Count
Source
7148
303
         {
7149
303
            return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_);
7150
303
         }
exprtk::details::trinary_node<float>::node_depth() const
Line
Count
Source
7148
303
         {
7149
303
            return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_);
7150
303
         }
7151
7152
      protected:
7153
7154
         operator_type operation_;
7155
         branch_t branch_[3];
7156
      };
7157
7158
      template <typename T>
7159
      class quaternary_node : public expression_node<T>
7160
      {
7161
      public:
7162
7163
         typedef expression_node<T>* expression_ptr;
7164
         typedef std::pair<expression_ptr,bool> branch_t;
7165
7166
         quaternary_node(const operator_type& opr,
7167
                         expression_ptr branch0,
7168
                         expression_ptr branch1,
7169
                         expression_ptr branch2,
7170
                         expression_ptr branch3)
7171
0
         : operation_(opr)
7172
0
         {
7173
0
            init_branches<4>(branch_, branch0, branch1, branch2, branch3);
7174
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>*)
7175
7176
         inline T value() const exprtk_override
7177
0
         {
7178
0
            return std::numeric_limits<T>::quiet_NaN();
7179
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::value() const
Unexecuted instantiation: exprtk::details::quaternary_node<float>::value() const
7180
7181
         inline typename expression_node<T>::node_type type() const exprtk_override
7182
0
         {
7183
0
            return expression_node<T>::e_quaternary;
7184
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::type() const
Unexecuted instantiation: exprtk::details::quaternary_node<float>::type() const
7185
7186
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7187
0
         {
7188
0
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7189
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>**> >&)
7190
7191
         std::size_t node_depth() const exprtk_override exprtk_final
7192
0
         {
7193
0
            return expression_node<T>::ndb_t::template compute_node_depth<4>(branch_);
7194
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::quaternary_node<float>::node_depth() const
7195
7196
         inline bool valid() const exprtk_override
7197
0
         {
7198
0
            return
7199
0
               branch_[0].first && branch_[0].first->valid() &&
7200
0
               branch_[1].first && branch_[1].first->valid() &&
7201
0
               branch_[2].first && branch_[2].first->valid() &&
7202
0
               branch_[3].first && branch_[3].first->valid() ;
7203
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::valid() const
Unexecuted instantiation: exprtk::details::quaternary_node<float>::valid() const
7204
7205
      protected:
7206
7207
         operator_type operation_;
7208
         branch_t branch_[4];
7209
      };
7210
7211
      template <typename T>
7212
      class conditional_node exprtk_final : public expression_node<T>
7213
      {
7214
      public:
7215
7216
         typedef expression_node<T>* expression_ptr;
7217
         typedef std::pair<expression_ptr,bool> branch_t;
7218
7219
         conditional_node(expression_ptr condition,
7220
                          expression_ptr consequent,
7221
                          expression_ptr alternative)
7222
88
         {
7223
88
            construct_branch_pair(condition_  , condition  );
7224
88
            construct_branch_pair(consequent_ , consequent );
7225
88
            construct_branch_pair(alternative_, alternative);
7226
88
            assert(valid());
7227
88
         }
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
7222
44
         {
7223
44
            construct_branch_pair(condition_  , condition  );
7224
44
            construct_branch_pair(consequent_ , consequent );
7225
44
            construct_branch_pair(alternative_, alternative);
7226
44
            assert(valid());
7227
44
         }
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
7222
44
         {
7223
44
            construct_branch_pair(condition_  , condition  );
7224
44
            construct_branch_pair(consequent_ , consequent );
7225
44
            construct_branch_pair(alternative_, alternative);
7226
44
            assert(valid());
7227
44
         }
7228
7229
         inline T value() const exprtk_override
7230
18
         {
7231
18
            if (is_true(condition_))
7232
18
               return consequent_.first->value();
7233
0
            else
7234
0
               return alternative_.first->value();
7235
18
         }
exprtk::details::conditional_node<double>::value() const
Line
Count
Source
7230
9
         {
7231
9
            if (is_true(condition_))
7232
9
               return consequent_.first->value();
7233
0
            else
7234
0
               return alternative_.first->value();
7235
9
         }
exprtk::details::conditional_node<float>::value() const
Line
Count
Source
7230
9
         {
7231
9
            if (is_true(condition_))
7232
9
               return consequent_.first->value();
7233
0
            else
7234
0
               return alternative_.first->value();
7235
9
         }
7236
7237
         inline typename expression_node<T>::node_type type() const exprtk_override
7238
510
         {
7239
510
            return expression_node<T>::e_conditional;
7240
510
         }
exprtk::details::conditional_node<double>::type() const
Line
Count
Source
7238
255
         {
7239
255
            return expression_node<T>::e_conditional;
7240
255
         }
exprtk::details::conditional_node<float>::type() const
Line
Count
Source
7238
255
         {
7239
255
            return expression_node<T>::e_conditional;
7240
255
         }
7241
7242
         inline bool valid() const exprtk_override
7243
334
         {
7244
334
            return
7245
334
               condition_  .first && condition_  .first->valid() &&
7246
334
               consequent_ .first && consequent_ .first->valid() &&
7247
334
               alternative_.first && alternative_.first->valid() ;
7248
334
         }
exprtk::details::conditional_node<double>::valid() const
Line
Count
Source
7243
167
         {
7244
167
            return
7245
167
               condition_  .first && condition_  .first->valid() &&
7246
167
               consequent_ .first && consequent_ .first->valid() &&
7247
167
               alternative_.first && alternative_.first->valid() ;
7248
167
         }
exprtk::details::conditional_node<float>::valid() const
Line
Count
Source
7243
167
         {
7244
167
            return
7245
167
               condition_  .first && condition_  .first->valid() &&
7246
167
               consequent_ .first && consequent_ .first->valid() &&
7247
167
               alternative_.first && alternative_.first->valid() ;
7248
167
         }
7249
7250
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7251
88
         {
7252
88
            expression_node<T>::ndb_t::collect(condition_   , node_delete_list);
7253
88
            expression_node<T>::ndb_t::collect(consequent_  , node_delete_list);
7254
88
            expression_node<T>::ndb_t::collect(alternative_ , node_delete_list);
7255
88
         }
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
7251
44
         {
7252
44
            expression_node<T>::ndb_t::collect(condition_   , node_delete_list);
7253
44
            expression_node<T>::ndb_t::collect(consequent_  , node_delete_list);
7254
44
            expression_node<T>::ndb_t::collect(alternative_ , node_delete_list);
7255
44
         }
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
7251
44
         {
7252
44
            expression_node<T>::ndb_t::collect(condition_   , node_delete_list);
7253
44
            expression_node<T>::ndb_t::collect(consequent_  , node_delete_list);
7254
44
            expression_node<T>::ndb_t::collect(alternative_ , node_delete_list);
7255
44
         }
7256
7257
         std::size_t node_depth() const exprtk_override
7258
186
         {
7259
186
            return expression_node<T>::ndb_t::compute_node_depth
7260
186
               (condition_, consequent_, alternative_);
7261
186
         }
exprtk::details::conditional_node<double>::node_depth() const
Line
Count
Source
7258
93
         {
7259
93
            return expression_node<T>::ndb_t::compute_node_depth
7260
93
               (condition_, consequent_, alternative_);
7261
93
         }
exprtk::details::conditional_node<float>::node_depth() const
Line
Count
Source
7258
93
         {
7259
93
            return expression_node<T>::ndb_t::compute_node_depth
7260
93
               (condition_, consequent_, alternative_);
7261
93
         }
7262
7263
      private:
7264
7265
         branch_t condition_;
7266
         branch_t consequent_;
7267
         branch_t alternative_;
7268
      };
7269
7270
      template <typename T>
7271
      class cons_conditional_node exprtk_final : public expression_node<T>
7272
      {
7273
      public:
7274
7275
         // Consequent only conditional statement node
7276
         typedef expression_node<T>* expression_ptr;
7277
         typedef std::pair<expression_ptr,bool> branch_t;
7278
7279
         cons_conditional_node(expression_ptr condition,
7280
                               expression_ptr consequent)
7281
0
         {
7282
0
            construct_branch_pair(condition_ , condition );
7283
0
            construct_branch_pair(consequent_, consequent);
7284
0
            assert(valid());
7285
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>*)
7286
7287
         inline T value() const exprtk_override
7288
0
         {
7289
0
            if (is_true(condition_))
7290
0
               return consequent_.first->value();
7291
0
            else
7292
0
               return std::numeric_limits<T>::quiet_NaN();
7293
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::value() const
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::value() const
7294
7295
         inline typename expression_node<T>::node_type type() const exprtk_override
7296
0
         {
7297
0
            return expression_node<T>::e_conditional;
7298
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::type() const
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::type() const
7299
7300
         inline bool valid() const exprtk_override
7301
0
         {
7302
0
            return
7303
0
               condition_ .first && condition_ .first->valid() &&
7304
0
               consequent_.first && consequent_.first->valid() ;
7305
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::valid() const
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::valid() const
7306
7307
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7308
0
         {
7309
0
            expression_node<T>::ndb_t::collect(condition_  , node_delete_list);
7310
0
            expression_node<T>::ndb_t::collect(consequent_ , node_delete_list);
7311
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>**> >&)
7312
7313
         std::size_t node_depth() const exprtk_override
7314
0
         {
7315
0
            return expression_node<T>::ndb_t::
7316
0
               compute_node_depth(condition_, consequent_);
7317
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::node_depth() const
7318
7319
      private:
7320
7321
         branch_t condition_;
7322
         branch_t consequent_;
7323
      };
7324
7325
      #ifndef exprtk_disable_break_continue
7326
      template <typename T>
7327
      class break_exception
7328
      {
7329
      public:
7330
7331
         explicit break_exception(const T& v)
7332
0
         : value(v)
7333
0
         {}
Unexecuted instantiation: exprtk::details::break_exception<double>::break_exception(double const&)
Unexecuted instantiation: exprtk::details::break_exception<float>::break_exception(float const&)
7334
7335
         T value;
7336
      };
7337
7338
      class continue_exception {};
7339
7340
      template <typename T>
7341
      class break_node exprtk_final : public expression_node<T>
7342
      {
7343
      public:
7344
7345
         typedef expression_node<T>* expression_ptr;
7346
         typedef std::pair<expression_ptr,bool> branch_t;
7347
7348
         explicit break_node(expression_ptr ret = expression_ptr(0))
7349
1
         {
7350
1
            construct_branch_pair(return_, ret);
7351
1
         }
exprtk::details::break_node<double>::break_node(exprtk::details::expression_node<double>*)
Line
Count
Source
7349
1
         {
7350
1
            construct_branch_pair(return_, ret);
7351
1
         }
Unexecuted instantiation: exprtk::details::break_node<float>::break_node(exprtk::details::expression_node<float>*)
7352
7353
         inline T value() const exprtk_override
7354
0
         {
7355
0
            const T result = return_.first ?
7356
0
                             return_.first->value() :
7357
0
                             std::numeric_limits<T>::quiet_NaN();
7358
7359
0
            throw break_exception<T>(result);
7360
7361
0
            #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
7362
0
            return std::numeric_limits<T>::quiet_NaN();
7363
0
            #endif
7364
0
         }
Unexecuted instantiation: exprtk::details::break_node<double>::value() const
Unexecuted instantiation: exprtk::details::break_node<float>::value() const
7365
7366
         inline typename expression_node<T>::node_type type() const exprtk_override
7367
6
         {
7368
6
            return expression_node<T>::e_break;
7369
6
         }
exprtk::details::break_node<double>::type() const
Line
Count
Source
7367
6
         {
7368
6
            return expression_node<T>::e_break;
7369
6
         }
Unexecuted instantiation: exprtk::details::break_node<float>::type() const
7370
7371
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7372
1
         {
7373
1
            expression_node<T>::ndb_t::collect(return_, node_delete_list);
7374
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
7372
1
         {
7373
1
            expression_node<T>::ndb_t::collect(return_, node_delete_list);
7374
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>**> >&)
7375
7376
         std::size_t node_depth() const exprtk_override
7377
1
         {
7378
1
            return expression_node<T>::ndb_t::compute_node_depth(return_);
7379
1
         }
exprtk::details::break_node<double>::node_depth() const
Line
Count
Source
7377
1
         {
7378
1
            return expression_node<T>::ndb_t::compute_node_depth(return_);
7379
1
         }
Unexecuted instantiation: exprtk::details::break_node<float>::node_depth() const
7380
7381
      private:
7382
7383
         branch_t return_;
7384
      };
7385
7386
      template <typename T>
7387
      class continue_node exprtk_final : public expression_node<T>
7388
      {
7389
      public:
7390
7391
         inline T value() const exprtk_override
7392
0
         {
7393
0
            throw continue_exception();
7394
0
            #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
7395
0
            return std::numeric_limits<T>::quiet_NaN();
7396
0
            #endif
7397
0
         }
Unexecuted instantiation: exprtk::details::continue_node<double>::value() const
Unexecuted instantiation: exprtk::details::continue_node<float>::value() const
7398
7399
         inline typename expression_node<T>::node_type type() const exprtk_override
7400
0
         {
7401
0
            return expression_node<T>::e_break;
7402
0
         }
Unexecuted instantiation: exprtk::details::continue_node<double>::type() const
Unexecuted instantiation: exprtk::details::continue_node<float>::type() const
7403
      };
7404
      #endif
7405
7406
      struct loop_runtime_checker
7407
      {
7408
         loop_runtime_checker(loop_runtime_check_ptr loop_runtime_check,
7409
                              loop_runtime_check::loop_types lp_typ = loop_runtime_check::e_invalid)
7410
2
         : iteration_count_(0)
7411
2
         , loop_runtime_check_(loop_runtime_check)
7412
2
         , max_loop_iterations_(loop_runtime_check_->max_loop_iterations)
7413
2
         , loop_type_(lp_typ)
7414
2
         {
7415
2
            assert(loop_runtime_check_);
7416
2
         }
7417
7418
         inline void reset(const _uint64_t initial_value = 0) const
7419
2
         {
7420
2
            iteration_count_ = initial_value;
7421
2
         }
7422
7423
         inline bool check() const
7424
14
         {
7425
14
            assert(loop_runtime_check_);
7426
7427
14
            if (
7428
14
                 (++iteration_count_ <= max_loop_iterations_) &&
7429
14
                 loop_runtime_check_->check()
7430
14
               )
7431
14
            {
7432
14
               return true;
7433
14
            }
7434
7435
0
            loop_runtime_check::violation_context ctxt;
7436
0
            ctxt.loop      = loop_type_;
7437
0
            ctxt.violation = loop_runtime_check::e_iteration_count;
7438
7439
0
            loop_runtime_check_->handle_runtime_violation(ctxt);
7440
7441
0
            return false;
7442
14
         }
7443
7444
         bool valid() const
7445
4
         {
7446
4
            return 0 != loop_runtime_check_;
7447
4
         }
7448
7449
         mutable _uint64_t iteration_count_;
7450
         mutable loop_runtime_check_ptr loop_runtime_check_;
7451
         const details::_uint64_t& max_loop_iterations_;
7452
         loop_runtime_check::loop_types loop_type_;
7453
      };
7454
7455
      template <typename T>
7456
      class while_loop_node : public expression_node<T>
7457
      {
7458
      public:
7459
7460
         typedef expression_node<T>* expression_ptr;
7461
         typedef std::pair<expression_ptr,bool> branch_t;
7462
7463
         while_loop_node(expression_ptr condition,
7464
                         expression_ptr loop_body)
7465
2
         {
7466
2
            construct_branch_pair(condition_, condition);
7467
2
            construct_branch_pair(loop_body_, loop_body);
7468
2
            assert(valid());
7469
2
         }
exprtk::details::while_loop_node<double>::while_loop_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7465
1
         {
7466
1
            construct_branch_pair(condition_, condition);
7467
1
            construct_branch_pair(loop_body_, loop_body);
7468
1
            assert(valid());
7469
1
         }
exprtk::details::while_loop_node<float>::while_loop_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7465
1
         {
7466
1
            construct_branch_pair(condition_, condition);
7467
1
            construct_branch_pair(loop_body_, loop_body);
7468
1
            assert(valid());
7469
1
         }
7470
7471
         inline T value() const exprtk_override
7472
0
         {
7473
0
            T result = T(0);
7474
7475
0
            while (is_true(condition_))
7476
0
            {
7477
0
               result = loop_body_.first->value();
7478
0
            }
7479
7480
0
            return result;
7481
0
         }
Unexecuted instantiation: exprtk::details::while_loop_node<double>::value() const
Unexecuted instantiation: exprtk::details::while_loop_node<float>::value() const
7482
7483
         inline typename expression_node<T>::node_type type() const exprtk_override
7484
8
         {
7485
8
            return expression_node<T>::e_while;
7486
8
         }
exprtk::details::while_loop_node<double>::type() const
Line
Count
Source
7484
4
         {
7485
4
            return expression_node<T>::e_while;
7486
4
         }
exprtk::details::while_loop_node<float>::type() const
Line
Count
Source
7484
4
         {
7485
4
            return expression_node<T>::e_while;
7486
4
         }
7487
7488
         inline bool valid() const exprtk_override
7489
6
         {
7490
6
            return
7491
6
               condition_.first && condition_.first->valid() &&
7492
6
               loop_body_.first && loop_body_.first->valid() ;
7493
6
         }
exprtk::details::while_loop_node<double>::valid() const
Line
Count
Source
7489
3
         {
7490
3
            return
7491
3
               condition_.first && condition_.first->valid() &&
7492
3
               loop_body_.first && loop_body_.first->valid() ;
7493
3
         }
exprtk::details::while_loop_node<float>::valid() const
Line
Count
Source
7489
3
         {
7490
3
            return
7491
3
               condition_.first && condition_.first->valid() &&
7492
3
               loop_body_.first && loop_body_.first->valid() ;
7493
3
         }
7494
7495
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7496
2
         {
7497
2
            expression_node<T>::ndb_t::collect(condition_ , node_delete_list);
7498
2
            expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list);
7499
2
         }
exprtk::details::while_loop_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7496
1
         {
7497
1
            expression_node<T>::ndb_t::collect(condition_ , node_delete_list);
7498
1
            expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list);
7499
1
         }
exprtk::details::while_loop_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7496
1
         {
7497
1
            expression_node<T>::ndb_t::collect(condition_ , node_delete_list);
7498
1
            expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list);
7499
1
         }
7500
7501
         std::size_t node_depth() const exprtk_override
7502
2
         {
7503
2
            return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_);
7504
2
         }
exprtk::details::while_loop_node<double>::node_depth() const
Line
Count
Source
7502
1
         {
7503
1
            return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_);
7504
1
         }
exprtk::details::while_loop_node<float>::node_depth() const
Line
Count
Source
7502
1
         {
7503
1
            return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_);
7504
1
         }
7505
7506
      protected:
7507
7508
         branch_t condition_;
7509
         branch_t loop_body_;
7510
      };
7511
7512
      template <typename T>
7513
      class while_loop_rtc_node exprtk_final
7514
                                : public while_loop_node<T>
7515
                                , public loop_runtime_checker
7516
      {
7517
      public:
7518
7519
         typedef while_loop_node<T>  parent_t;
7520
         typedef expression_node<T>* expression_ptr;
7521
7522
         while_loop_rtc_node(expression_ptr condition,
7523
                             expression_ptr loop_body,
7524
                             loop_runtime_check_ptr loop_rt_chk)
7525
2
         : parent_t(condition, loop_body)
7526
2
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop)
7527
2
         {
7528
2
            assert(valid());
7529
2
         }
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*)
Line
Count
Source
7525
1
         : parent_t(condition, loop_body)
7526
1
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop)
7527
1
         {
7528
1
            assert(valid());
7529
1
         }
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*)
Line
Count
Source
7525
1
         : parent_t(condition, loop_body)
7526
1
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop)
7527
1
         {
7528
1
            assert(valid());
7529
1
         }
7530
7531
         inline T value() const exprtk_override
7532
2
         {
7533
7534
2
            T result = T(0);
7535
7536
2
            loop_runtime_checker::reset();
7537
7538
16
            while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7539
14
            {
7540
14
               result = parent_t::loop_body_.first->value();
7541
14
            }
7542
7543
2
            return result;
7544
2
         }
exprtk::details::while_loop_rtc_node<double>::value() const
Line
Count
Source
7532
1
         {
7533
7534
1
            T result = T(0);
7535
7536
1
            loop_runtime_checker::reset();
7537
7538
8
            while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7539
7
            {
7540
7
               result = parent_t::loop_body_.first->value();
7541
7
            }
7542
7543
1
            return result;
7544
1
         }
exprtk::details::while_loop_rtc_node<float>::value() const
Line
Count
Source
7532
1
         {
7533
7534
1
            T result = T(0);
7535
7536
1
            loop_runtime_checker::reset();
7537
7538
8
            while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7539
7
            {
7540
7
               result = parent_t::loop_body_.first->value();
7541
7
            }
7542
7543
1
            return result;
7544
1
         }
7545
7546
         using parent_t::valid;
7547
7548
         bool valid() const exprtk_override exprtk_final
7549
4
         {
7550
4
            return parent_t::valid() &&
7551
4
                   loop_runtime_checker::valid();
7552
4
         }
exprtk::details::while_loop_rtc_node<double>::valid() const
Line
Count
Source
7549
2
         {
7550
2
            return parent_t::valid() &&
7551
2
                   loop_runtime_checker::valid();
7552
2
         }
exprtk::details::while_loop_rtc_node<float>::valid() const
Line
Count
Source
7549
2
         {
7550
2
            return parent_t::valid() &&
7551
2
                   loop_runtime_checker::valid();
7552
2
         }
7553
      };
7554
7555
      template <typename T>
7556
      class repeat_until_loop_node : public expression_node<T>
7557
      {
7558
      public:
7559
7560
         typedef expression_node<T>* expression_ptr;
7561
         typedef std::pair<expression_ptr,bool> branch_t;
7562
7563
         repeat_until_loop_node(expression_ptr condition,
7564
                                expression_ptr loop_body)
7565
0
         {
7566
0
            construct_branch_pair(condition_, condition);
7567
0
            construct_branch_pair(loop_body_, loop_body);
7568
0
            assert(valid());
7569
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>*)
7570
7571
         inline T value() const exprtk_override
7572
0
         {
7573
0
            T result = T(0);
7574
7575
0
            do
7576
0
            {
7577
0
               result = loop_body_.first->value();
7578
0
            }
7579
0
            while (is_false(condition_.first));
7580
7581
0
            return result;
7582
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::value() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::value() const
7583
7584
         inline typename expression_node<T>::node_type type() const exprtk_override
7585
0
         {
7586
0
            return expression_node<T>::e_repeat;
7587
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::type() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::type() const
7588
7589
         inline bool valid() const exprtk_override
7590
0
         {
7591
0
            return
7592
0
               condition_.first && condition_.first->valid() &&
7593
0
               loop_body_.first && loop_body_.first->valid() ;
7594
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::valid() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::valid() const
7595
7596
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7597
0
         {
7598
0
            expression_node<T>::ndb_t::collect(condition_ , node_delete_list);
7599
0
            expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list);
7600
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>**> >&)
7601
7602
         std::size_t node_depth() const exprtk_override
7603
0
         {
7604
0
            return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_);
7605
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
7606
7607
      protected:
7608
7609
         branch_t condition_;
7610
         branch_t loop_body_;
7611
      };
7612
7613
      template <typename T>
7614
      class repeat_until_loop_rtc_node exprtk_final
7615
                                       : public repeat_until_loop_node<T>
7616
                                       , public loop_runtime_checker
7617
      {
7618
      public:
7619
7620
         typedef repeat_until_loop_node<T> parent_t;
7621
         typedef expression_node<T>*       expression_ptr;
7622
7623
         repeat_until_loop_rtc_node(expression_ptr condition,
7624
                                    expression_ptr loop_body,
7625
                                    loop_runtime_check_ptr loop_rt_chk)
7626
0
         : parent_t(condition, loop_body)
7627
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_repeat_until_loop)
7628
0
         {
7629
0
            assert(valid());
7630
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*)
7631
7632
         inline T value() const exprtk_override
7633
0
         {
7634
0
            T result = T(0);
7635
7636
0
            loop_runtime_checker::reset(1);
7637
7638
0
            do
7639
0
            {
7640
0
               result = parent_t::loop_body_.first->value();
7641
0
            }
7642
0
            while (is_false(parent_t::condition_.first) && loop_runtime_checker::check());
7643
7644
0
            return result;
7645
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
7646
7647
         using parent_t::valid;
7648
7649
         inline bool valid() const exprtk_override exprtk_final
7650
0
         {
7651
0
            return parent_t::valid() &&
7652
0
                   loop_runtime_checker::valid();
7653
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
7654
      };
7655
7656
      template <typename T>
7657
      class for_loop_node : public expression_node<T>
7658
      {
7659
      public:
7660
7661
         typedef expression_node<T>* expression_ptr;
7662
         typedef std::pair<expression_ptr,bool> branch_t;
7663
7664
         for_loop_node(expression_ptr initialiser,
7665
                       expression_ptr condition,
7666
                       expression_ptr incrementor,
7667
                       expression_ptr loop_body)
7668
0
         {
7669
0
            construct_branch_pair(initialiser_, initialiser);
7670
0
            construct_branch_pair(condition_  , condition  );
7671
0
            construct_branch_pair(incrementor_, incrementor);
7672
0
            construct_branch_pair(loop_body_  , loop_body  );
7673
0
            assert(valid());
7674
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>*)
7675
7676
         inline T value() const exprtk_override
7677
0
         {
7678
0
            T result = T(0);
7679
7680
0
            if (initialiser_.first)
7681
0
               initialiser_.first->value();
7682
7683
0
            if (incrementor_.first)
7684
0
            {
7685
0
               while (is_true(condition_))
7686
0
               {
7687
0
                  result = loop_body_.first->value();
7688
0
                  incrementor_.first->value();
7689
0
               }
7690
0
            }
7691
0
            else
7692
0
            {
7693
0
               while (is_true(condition_))
7694
0
               {
7695
0
                  result = loop_body_.first->value();
7696
0
               }
7697
0
            }
7698
7699
0
            return result;
7700
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::value() const
Unexecuted instantiation: exprtk::details::for_loop_node<float>::value() const
7701
7702
         inline typename expression_node<T>::node_type type() const exprtk_override
7703
0
         {
7704
0
            return expression_node<T>::e_for;
7705
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::type() const
Unexecuted instantiation: exprtk::details::for_loop_node<float>::type() const
7706
7707
         inline bool valid() const exprtk_override
7708
0
         {
7709
0
            return condition_.first && loop_body_.first;
7710
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::valid() const
Unexecuted instantiation: exprtk::details::for_loop_node<float>::valid() const
7711
7712
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7713
0
         {
7714
0
            expression_node<T>::ndb_t::collect(initialiser_ , node_delete_list);
7715
0
            expression_node<T>::ndb_t::collect(condition_   , node_delete_list);
7716
0
            expression_node<T>::ndb_t::collect(incrementor_ , node_delete_list);
7717
0
            expression_node<T>::ndb_t::collect(loop_body_   , node_delete_list);
7718
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>**> >&)
7719
7720
         std::size_t node_depth() const exprtk_override
7721
0
         {
7722
0
            return expression_node<T>::ndb_t::compute_node_depth
7723
0
               (initialiser_, condition_, incrementor_, loop_body_);
7724
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::for_loop_node<float>::node_depth() const
7725
7726
      protected:
7727
7728
         branch_t initialiser_;
7729
         branch_t condition_  ;
7730
         branch_t incrementor_;
7731
         branch_t loop_body_  ;
7732
      };
7733
7734
      template <typename T>
7735
      class for_loop_rtc_node exprtk_final
7736
                              : public for_loop_node<T>
7737
                              , public loop_runtime_checker
7738
      {
7739
      public:
7740
7741
         typedef for_loop_node<T>    parent_t;
7742
         typedef expression_node<T>* expression_ptr;
7743
7744
         for_loop_rtc_node(expression_ptr initialiser,
7745
                           expression_ptr condition,
7746
                           expression_ptr incrementor,
7747
                           expression_ptr loop_body,
7748
                           loop_runtime_check_ptr loop_rt_chk)
7749
0
         : parent_t(initialiser, condition, incrementor, loop_body)
7750
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_for_loop)
7751
0
         {
7752
0
            assert(valid());
7753
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*)
7754
7755
         inline T value() const exprtk_override
7756
0
         {
7757
0
            T result = T(0);
7758
7759
0
            loop_runtime_checker::reset();
7760
7761
0
            if (parent_t::initialiser_.first)
7762
0
               parent_t::initialiser_.first->value();
7763
7764
0
            if (parent_t::incrementor_.first)
7765
0
            {
7766
0
               while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7767
0
               {
7768
0
                  result = parent_t::loop_body_.first->value();
7769
0
                  parent_t::incrementor_.first->value();
7770
0
               }
7771
0
            }
7772
0
            else
7773
0
            {
7774
0
               while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7775
0
               {
7776
0
                  result = parent_t::loop_body_.first->value();
7777
0
               }
7778
0
            }
7779
7780
0
            return result;
7781
0
         }
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::value() const
7782
7783
         using parent_t::valid;
7784
7785
         inline bool valid() const exprtk_override exprtk_final
7786
0
         {
7787
0
            return parent_t::valid() &&
7788
0
                   loop_runtime_checker::valid();
7789
0
         }
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::valid() const
7790
      };
7791
7792
      #ifndef exprtk_disable_break_continue
7793
      template <typename T>
7794
      class while_loop_bc_node : public while_loop_node<T>
7795
      {
7796
      public:
7797
7798
         typedef while_loop_node<T>  parent_t;
7799
         typedef expression_node<T>* expression_ptr;
7800
7801
         while_loop_bc_node(expression_ptr condition,
7802
                            expression_ptr loop_body)
7803
0
         : parent_t(condition, loop_body)
7804
0
         {
7805
0
            assert(parent_t::valid());
7806
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>*)
7807
7808
         inline T value() const exprtk_override
7809
0
         {
7810
0
            T result = T(0);
7811
7812
0
            while (is_true(parent_t::condition_))
7813
0
            {
7814
0
               try
7815
0
               {
7816
0
                  result = parent_t::loop_body_.first->value();
7817
0
               }
7818
0
               catch(const break_exception<T>& e)
7819
0
               {
7820
0
                  return e.value;
7821
0
               }
7822
0
               catch(const continue_exception&)
7823
0
               {}
7824
0
            }
7825
7826
0
            return result;
7827
0
         }
Unexecuted instantiation: exprtk::details::while_loop_bc_node<double>::value() const
Unexecuted instantiation: exprtk::details::while_loop_bc_node<float>::value() const
7828
      };
7829
7830
      template <typename T>
7831
      class while_loop_bc_rtc_node exprtk_final
7832
                                   : public while_loop_bc_node<T>
7833
                                   , public loop_runtime_checker
7834
      {
7835
      public:
7836
7837
         typedef while_loop_bc_node<T> parent_t;
7838
         typedef expression_node<T>*   expression_ptr;
7839
7840
         while_loop_bc_rtc_node(expression_ptr condition,
7841
                                expression_ptr loop_body,
7842
                                loop_runtime_check_ptr loop_rt_chk)
7843
0
         : parent_t(condition, loop_body)
7844
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop)
7845
0
         {
7846
0
            assert(valid());
7847
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*)
7848
7849
         inline T value() const exprtk_override
7850
0
         {
7851
0
            T result = T(0);
7852
7853
0
            loop_runtime_checker::reset();
7854
7855
0
            while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7856
0
            {
7857
0
               try
7858
0
               {
7859
0
                  result = parent_t::loop_body_.first->value();
7860
0
               }
7861
0
               catch(const break_exception<T>& e)
7862
0
               {
7863
0
                  return e.value;
7864
0
               }
7865
0
               catch(const continue_exception&)
7866
0
               {}
7867
0
            }
7868
7869
0
            return result;
7870
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
7871
7872
         using parent_t::valid;
7873
7874
         inline bool valid() const exprtk_override exprtk_final
7875
0
         {
7876
0
            return parent_t::valid() &&
7877
0
                   loop_runtime_checker::valid();
7878
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
7879
      };
7880
7881
      template <typename T>
7882
      class repeat_until_loop_bc_node : public repeat_until_loop_node<T>
7883
      {
7884
      public:
7885
7886
         typedef repeat_until_loop_node<T> parent_t;
7887
         typedef expression_node<T>*       expression_ptr;
7888
7889
         repeat_until_loop_bc_node(expression_ptr condition,
7890
                                   expression_ptr loop_body)
7891
0
         : parent_t(condition, loop_body)
7892
0
         {
7893
0
            assert(parent_t::valid());
7894
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>*)
7895
7896
         inline T value() const exprtk_override
7897
0
         {
7898
0
            T result = T(0);
7899
7900
0
            do
7901
0
            {
7902
0
               try
7903
0
               {
7904
0
                  result = parent_t::loop_body_.first->value();
7905
0
               }
7906
0
               catch(const break_exception<T>& e)
7907
0
               {
7908
0
                  return e.value;
7909
0
               }
7910
0
               catch(const continue_exception&)
7911
0
               {}
7912
0
            }
7913
0
            while (is_false(parent_t::condition_.first));
7914
7915
0
            return result;
7916
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
7917
      };
7918
7919
      template <typename T>
7920
      class repeat_until_loop_bc_rtc_node exprtk_final
7921
                                          : public repeat_until_loop_bc_node<T>
7922
                                          , public loop_runtime_checker
7923
      {
7924
      public:
7925
7926
         typedef repeat_until_loop_bc_node<T> parent_t;
7927
         typedef expression_node<T>*          expression_ptr;
7928
7929
         repeat_until_loop_bc_rtc_node(expression_ptr condition,
7930
                                       expression_ptr loop_body,
7931
                                       loop_runtime_check_ptr loop_rt_chk)
7932
0
         : parent_t(condition, loop_body)
7933
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_repeat_until_loop)
7934
0
         {
7935
0
            assert(valid());
7936
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*)
7937
7938
         inline T value() const exprtk_override
7939
0
         {
7940
0
            T result = T(0);
7941
7942
0
            loop_runtime_checker::reset();
7943
7944
0
            do
7945
0
            {
7946
0
               try
7947
0
               {
7948
0
                  result = parent_t::loop_body_.first->value();
7949
0
               }
7950
0
               catch(const break_exception<T>& e)
7951
0
               {
7952
0
                  return e.value;
7953
0
               }
7954
0
               catch(const continue_exception&)
7955
0
               {}
7956
0
            }
7957
0
            while (is_false(parent_t::condition_.first) && loop_runtime_checker::check());
7958
7959
0
            return result;
7960
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
7961
7962
         using parent_t::valid;
7963
7964
         inline bool valid() const exprtk_override exprtk_final
7965
0
         {
7966
0
            return parent_t::valid() &&
7967
0
                   loop_runtime_checker::valid();
7968
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
7969
      };
7970
7971
      template <typename T>
7972
      class for_loop_bc_node : public for_loop_node<T>
7973
      {
7974
      public:
7975
7976
         typedef for_loop_node<T>    parent_t;
7977
         typedef expression_node<T>* expression_ptr;
7978
7979
         for_loop_bc_node(expression_ptr initialiser,
7980
                          expression_ptr condition,
7981
                          expression_ptr incrementor,
7982
                          expression_ptr loop_body)
7983
0
         : parent_t(initialiser, condition, incrementor, loop_body)
7984
0
         {
7985
0
            assert(parent_t::valid());
7986
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>*)
7987
7988
         inline T value() const exprtk_override
7989
0
         {
7990
0
            T result = T(0);
7991
7992
0
            if (parent_t::initialiser_.first)
7993
0
               parent_t::initialiser_.first->value();
7994
7995
0
            if (parent_t::incrementor_.first)
7996
0
            {
7997
0
               while (is_true(parent_t::condition_))
7998
0
               {
7999
0
                  try
8000
0
                  {
8001
0
                     result = parent_t::loop_body_.first->value();
8002
0
                  }
8003
0
                  catch(const break_exception<T>& e)
8004
0
                  {
8005
0
                     return e.value;
8006
0
                  }
8007
0
                  catch(const continue_exception&)
8008
0
                  {}
8009
8010
0
                  parent_t::incrementor_.first->value();
8011
0
               }
8012
0
            }
8013
0
            else
8014
0
            {
8015
0
               while (is_true(parent_t::condition_))
8016
0
               {
8017
0
                  try
8018
0
                  {
8019
0
                     result = parent_t::loop_body_.first->value();
8020
0
                  }
8021
0
                  catch(const break_exception<T>& e)
8022
0
                  {
8023
0
                     return e.value;
8024
0
                  }
8025
0
                  catch(const continue_exception&)
8026
0
                  {}
8027
0
               }
8028
0
            }
8029
8030
0
            return result;
8031
0
         }
Unexecuted instantiation: exprtk::details::for_loop_bc_node<double>::value() const
Unexecuted instantiation: exprtk::details::for_loop_bc_node<float>::value() const
8032
      };
8033
8034
      template <typename T>
8035
      class for_loop_bc_rtc_node exprtk_final
8036
                                 : public for_loop_bc_node<T>
8037
                                 , public loop_runtime_checker
8038
      {
8039
      public:
8040
8041
         typedef for_loop_bc_node<T> parent_t;
8042
         typedef expression_node<T>* expression_ptr;
8043
8044
         for_loop_bc_rtc_node(expression_ptr initialiser,
8045
                              expression_ptr condition,
8046
                              expression_ptr incrementor,
8047
                              expression_ptr loop_body,
8048
                              loop_runtime_check_ptr loop_rt_chk)
8049
0
         : parent_t(initialiser, condition, incrementor, loop_body)
8050
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_for_loop)
8051
0
         {
8052
0
            assert(valid());
8053
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*)
8054
8055
         inline T value() const exprtk_override
8056
0
         {
8057
0
            T result = T(0);
8058
8059
0
            loop_runtime_checker::reset();
8060
8061
0
            if (parent_t::initialiser_.first)
8062
0
               parent_t::initialiser_.first->value();
8063
8064
0
            if (parent_t::incrementor_.first)
8065
0
            {
8066
0
               while (is_true(parent_t::condition_) && loop_runtime_checker::check())
8067
0
               {
8068
0
                  try
8069
0
                  {
8070
0
                     result = parent_t::loop_body_.first->value();
8071
0
                  }
8072
0
                  catch(const break_exception<T>& e)
8073
0
                  {
8074
0
                     return e.value;
8075
0
                  }
8076
0
                  catch(const continue_exception&)
8077
0
                  {}
8078
8079
0
                  parent_t::incrementor_.first->value();
8080
0
               }
8081
0
            }
8082
0
            else
8083
0
            {
8084
0
               while (is_true(parent_t::condition_) && loop_runtime_checker::check())
8085
0
               {
8086
0
                  try
8087
0
                  {
8088
0
                     result = parent_t::loop_body_.first->value();
8089
0
                  }
8090
0
                  catch(const break_exception<T>& e)
8091
0
                  {
8092
0
                     return e.value;
8093
0
                  }
8094
0
                  catch(const continue_exception&)
8095
0
                  {}
8096
0
               }
8097
0
            }
8098
8099
0
            return result;
8100
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
8101
8102
         using parent_t::valid;
8103
8104
         inline bool valid() const exprtk_override exprtk_final
8105
0
         {
8106
0
            return parent_t::valid() &&
8107
0
                   loop_runtime_checker::valid();
8108
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
8109
      };
8110
      #endif
8111
8112
      template <typename T>
8113
      class switch_node : public expression_node<T>
8114
      {
8115
      public:
8116
8117
         typedef expression_node<T>* expression_ptr;
8118
         typedef std::pair<expression_ptr,bool> branch_t;
8119
8120
         template <typename Allocator,
8121
                   template <typename, typename> class Sequence>
8122
         explicit switch_node(const Sequence<expression_ptr,Allocator>& arg_list)
8123
0
         {
8124
0
            if (1 != (arg_list.size() & 1))
8125
0
               return;
8126
8127
0
            arg_list_.resize(arg_list.size());
8128
8129
0
            for (std::size_t i = 0; i < arg_list.size(); ++i)
8130
0
            {
8131
0
               if (arg_list[i] && arg_list[i]->valid())
8132
0
               {
8133
0
                  construct_branch_pair(arg_list_[i], arg_list[i]);
8134
0
               }
8135
0
               else
8136
0
               {
8137
0
                  arg_list_.clear();
8138
0
                  return;
8139
0
               }
8140
0
            }
8141
8142
0
            assert(valid());
8143
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&)
8144
8145
         inline T value() const exprtk_override
8146
0
         {
8147
0
            const std::size_t upper_bound = (arg_list_.size() - 1);
8148
8149
0
            for (std::size_t i = 0; i < upper_bound; i += 2)
8150
0
            {
8151
0
               expression_ptr condition  = arg_list_[i    ].first;
8152
0
               expression_ptr consequent = arg_list_[i + 1].first;
8153
8154
0
               if (is_true(condition))
8155
0
               {
8156
0
                  return consequent->value();
8157
0
               }
8158
0
            }
8159
8160
0
            return arg_list_[upper_bound].first->value();
8161
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::value() const
Unexecuted instantiation: exprtk::details::switch_node<float>::value() const
8162
8163
         inline typename expression_node<T>::node_type type() const exprtk_override exprtk_final
8164
0
         {
8165
0
            return expression_node<T>::e_switch;
8166
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::type() const
Unexecuted instantiation: exprtk::details::switch_node<float>::type() const
8167
8168
         inline bool valid() const exprtk_override
8169
0
         {
8170
0
            return !arg_list_.empty();
8171
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::valid() const
Unexecuted instantiation: exprtk::details::switch_node<float>::valid() const
8172
8173
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8174
0
         {
8175
0
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
8176
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>**> >&)
8177
8178
         std::size_t node_depth() const exprtk_override exprtk_final
8179
0
         {
8180
0
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
8181
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::switch_node<float>::node_depth() const
8182
8183
      protected:
8184
8185
         std::vector<branch_t> arg_list_;
8186
      };
8187
8188
      template <typename T, typename Switch_N>
8189
      class switch_n_node exprtk_final : public switch_node<T>
8190
      {
8191
      public:
8192
8193
         typedef expression_node<T>* expression_ptr;
8194
8195
         template <typename Allocator,
8196
                   template <typename, typename> class Sequence>
8197
         explicit switch_n_node(const Sequence<expression_ptr,Allocator>& arg_list)
8198
0
         : switch_node<T>(arg_list)
8199
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&)
8200
8201
         inline T value() const exprtk_override
8202
0
         {
8203
0
            return Switch_N::process(switch_node<T>::arg_list_);
8204
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
8205
      };
8206
8207
      template <typename T>
8208
      class multi_switch_node exprtk_final : public expression_node<T>
8209
      {
8210
      public:
8211
8212
         typedef expression_node<T>* expression_ptr;
8213
         typedef std::pair<expression_ptr,bool> branch_t;
8214
8215
         template <typename Allocator,
8216
                   template <typename, typename> class Sequence>
8217
         explicit multi_switch_node(const Sequence<expression_ptr,Allocator>& arg_list)
8218
0
         {
8219
0
            if (0 != (arg_list.size() & 1))
8220
0
               return;
8221
8222
0
            arg_list_.resize(arg_list.size());
8223
8224
0
            for (std::size_t i = 0; i < arg_list.size(); ++i)
8225
0
            {
8226
0
               if (arg_list[i] && arg_list[i]->valid())
8227
0
               {
8228
0
                  construct_branch_pair(arg_list_[i], arg_list[i]);
8229
0
               }
8230
0
               else
8231
0
               {
8232
0
                  arg_list_.clear();
8233
0
                  return;
8234
0
               }
8235
0
            }
8236
8237
0
            assert(valid());
8238
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&)
8239
8240
         inline T value() const exprtk_override
8241
0
         {
8242
0
            const std::size_t upper_bound = (arg_list_.size() - 1);
8243
8244
0
            T result = T(0);
8245
8246
0
            for (std::size_t i = 0; i < upper_bound; i += 2)
8247
0
            {
8248
0
               expression_ptr condition  = arg_list_[i    ].first;
8249
0
               expression_ptr consequent = arg_list_[i + 1].first;
8250
8251
0
               if (is_true(condition))
8252
0
               {
8253
0
                  result = consequent->value();
8254
0
               }
8255
0
            }
8256
8257
0
            return result;
8258
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::value() const
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::value() const
8259
8260
         inline typename expression_node<T>::node_type type() const exprtk_override
8261
0
         {
8262
0
            return expression_node<T>::e_mswitch;
8263
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::type() const
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::type() const
8264
8265
         inline bool valid() const exprtk_override
8266
0
         {
8267
0
            return !arg_list_.empty() && (0 == (arg_list_.size() % 2));
8268
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::valid() const
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::valid() const
8269
8270
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8271
0
         {
8272
0
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
8273
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>**> >&)
8274
8275
         std::size_t node_depth() const exprtk_override exprtk_final
8276
0
         {
8277
0
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
8278
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::node_depth() const
8279
8280
      private:
8281
8282
         std::vector<branch_t> arg_list_;
8283
      };
8284
8285
      template <typename T>
8286
      class ivariable
8287
      {
8288
      public:
8289
8290
         virtual ~ivariable()
8291
89.9k
         {}
exprtk::details::ivariable<double>::~ivariable()
Line
Count
Source
8291
44.9k
         {}
exprtk::details::ivariable<float>::~ivariable()
Line
Count
Source
8291
44.9k
         {}
8292
8293
         virtual T& ref() = 0;
8294
         virtual const T& ref() const = 0;
8295
      };
8296
8297
      template <typename T>
8298
      class variable_node exprtk_final
8299
                          : public expression_node<T>
8300
                          , public ivariable      <T>
8301
      {
8302
      public:
8303
8304
         static T null_value;
8305
8306
         explicit variable_node()
8307
         : value_(&null_value)
8308
         {}
8309
8310
         explicit variable_node(T& v)
8311
89.9k
         : value_(&v)
8312
89.9k
         {}
exprtk::details::variable_node<double>::variable_node(double&)
Line
Count
Source
8311
44.9k
         : value_(&v)
8312
44.9k
         {}
exprtk::details::variable_node<float>::variable_node(float&)
Line
Count
Source
8311
44.9k
         : value_(&v)
8312
44.9k
         {}
8313
8314
         inline bool operator <(const variable_node<T>& v) const
8315
         {
8316
            return this < (&v);
8317
         }
8318
8319
         inline T value() const exprtk_override
8320
610
         {
8321
610
            return (*value_);
8322
610
         }
exprtk::details::variable_node<double>::value() const
Line
Count
Source
8320
305
         {
8321
305
            return (*value_);
8322
305
         }
exprtk::details::variable_node<float>::value() const
Line
Count
Source
8320
305
         {
8321
305
            return (*value_);
8322
305
         }
8323
8324
         inline T& ref() exprtk_override
8325
163k
         {
8326
163k
            return (*value_);
8327
163k
         }
exprtk::details::variable_node<double>::ref()
Line
Count
Source
8325
116k
         {
8326
116k
            return (*value_);
8327
116k
         }
exprtk::details::variable_node<float>::ref()
Line
Count
Source
8325
47.2k
         {
8326
47.2k
            return (*value_);
8327
47.2k
         }
8328
8329
         inline const T& ref() const exprtk_override
8330
704
         {
8331
704
            return (*value_);
8332
704
         }
exprtk::details::variable_node<double>::ref() const
Line
Count
Source
8330
352
         {
8331
352
            return (*value_);
8332
352
         }
exprtk::details::variable_node<float>::ref() const
Line
Count
Source
8330
352
         {
8331
352
            return (*value_);
8332
352
         }
8333
8334
         inline typename expression_node<T>::node_type type() const exprtk_override
8335
2.53M
         {
8336
2.53M
            return expression_node<T>::e_variable;
8337
2.53M
         }
exprtk::details::variable_node<double>::type() const
Line
Count
Source
8335
1.79M
         {
8336
1.79M
            return expression_node<T>::e_variable;
8337
1.79M
         }
exprtk::details::variable_node<float>::type() const
Line
Count
Source
8335
738k
         {
8336
738k
            return expression_node<T>::e_variable;
8337
738k
         }
8338
8339
      private:
8340
8341
         T* value_;
8342
      };
8343
8344
      template <typename T>
8345
      T variable_node<T>::null_value = T(std::numeric_limits<T>::quiet_NaN());
8346
8347
      template <typename T>
8348
      struct range_pack
8349
      {
8350
         typedef expression_node<T>*           expression_node_ptr;
8351
         typedef std::pair<std::size_t,std::size_t> cached_range_t;
8352
8353
         range_pack()
8354
1.05k
         : n0_e (std::make_pair(false,expression_node_ptr(0)))
8355
1.05k
         , n1_e (std::make_pair(false,expression_node_ptr(0)))
8356
1.05k
         , n0_c (std::make_pair(false,0))
8357
1.05k
         , n1_c (std::make_pair(false,0))
8358
1.05k
         , cache(std::make_pair(0,0))
8359
1.05k
         {}
exprtk::details::range_pack<double>::range_pack()
Line
Count
Source
8354
525
         : n0_e (std::make_pair(false,expression_node_ptr(0)))
8355
525
         , n1_e (std::make_pair(false,expression_node_ptr(0)))
8356
525
         , n0_c (std::make_pair(false,0))
8357
525
         , n1_c (std::make_pair(false,0))
8358
525
         , cache(std::make_pair(0,0))
8359
525
         {}
exprtk::details::range_pack<float>::range_pack()
Line
Count
Source
8354
525
         : n0_e (std::make_pair(false,expression_node_ptr(0)))
8355
525
         , n1_e (std::make_pair(false,expression_node_ptr(0)))
8356
525
         , n0_c (std::make_pair(false,0))
8357
525
         , n1_c (std::make_pair(false,0))
8358
525
         , cache(std::make_pair(0,0))
8359
525
         {}
8360
8361
         void clear()
8362
206
         {
8363
206
            n0_e  = std::make_pair(false,expression_node_ptr(0));
8364
206
            n1_e  = std::make_pair(false,expression_node_ptr(0));
8365
206
            n0_c  = std::make_pair(false,0);
8366
206
            n1_c  = std::make_pair(false,0);
8367
206
            cache = std::make_pair(0,0);
8368
206
         }
exprtk::details::range_pack<double>::clear()
Line
Count
Source
8362
103
         {
8363
103
            n0_e  = std::make_pair(false,expression_node_ptr(0));
8364
103
            n1_e  = std::make_pair(false,expression_node_ptr(0));
8365
103
            n0_c  = std::make_pair(false,0);
8366
103
            n1_c  = std::make_pair(false,0);
8367
103
            cache = std::make_pair(0,0);
8368
103
         }
exprtk::details::range_pack<float>::clear()
Line
Count
Source
8362
103
         {
8363
103
            n0_e  = std::make_pair(false,expression_node_ptr(0));
8364
103
            n1_e  = std::make_pair(false,expression_node_ptr(0));
8365
103
            n0_c  = std::make_pair(false,0);
8366
103
            n1_c  = std::make_pair(false,0);
8367
103
            cache = std::make_pair(0,0);
8368
103
         }
8369
8370
         void free()
8371
140
         {
8372
140
            if (n0_e.first && n0_e.second)
8373
76
            {
8374
76
               n0_e.first = false;
8375
8376
76
               if (
8377
76
                    !is_variable_node(n0_e.second) &&
8378
76
                    !is_string_node  (n0_e.second)
8379
76
                  )
8380
12
               {
8381
12
                  destroy_node(n0_e.second);
8382
12
               }
8383
76
            }
8384
8385
140
            if (n1_e.first && n1_e.second)
8386
8
            {
8387
8
               n1_e.first = false;
8388
8389
8
               if (
8390
8
                    !is_variable_node(n1_e.second) &&
8391
8
                    !is_string_node  (n1_e.second)
8392
8
                  )
8393
4
               {
8394
4
                  destroy_node(n1_e.second);
8395
4
               }
8396
8
            }
8397
140
         }
exprtk::details::range_pack<double>::free()
Line
Count
Source
8371
70
         {
8372
70
            if (n0_e.first && n0_e.second)
8373
38
            {
8374
38
               n0_e.first = false;
8375
8376
38
               if (
8377
38
                    !is_variable_node(n0_e.second) &&
8378
38
                    !is_string_node  (n0_e.second)
8379
38
                  )
8380
6
               {
8381
6
                  destroy_node(n0_e.second);
8382
6
               }
8383
38
            }
8384
8385
70
            if (n1_e.first && n1_e.second)
8386
4
            {
8387
4
               n1_e.first = false;
8388
8389
4
               if (
8390
4
                    !is_variable_node(n1_e.second) &&
8391
4
                    !is_string_node  (n1_e.second)
8392
4
                  )
8393
2
               {
8394
2
                  destroy_node(n1_e.second);
8395
2
               }
8396
4
            }
8397
70
         }
exprtk::details::range_pack<float>::free()
Line
Count
Source
8371
70
         {
8372
70
            if (n0_e.first && n0_e.second)
8373
38
            {
8374
38
               n0_e.first = false;
8375
8376
38
               if (
8377
38
                    !is_variable_node(n0_e.second) &&
8378
38
                    !is_string_node  (n0_e.second)
8379
38
                  )
8380
6
               {
8381
6
                  destroy_node(n0_e.second);
8382
6
               }
8383
38
            }
8384
8385
70
            if (n1_e.first && n1_e.second)
8386
4
            {
8387
4
               n1_e.first = false;
8388
8389
4
               if (
8390
4
                    !is_variable_node(n1_e.second) &&
8391
4
                    !is_string_node  (n1_e.second)
8392
4
                  )
8393
2
               {
8394
2
                  destroy_node(n1_e.second);
8395
2
               }
8396
4
            }
8397
70
         }
8398
8399
         bool const_range() const
8400
92
         {
8401
92
           return ( n0_c.first &&  n1_c.first) &&
8402
92
                  (!n0_e.first && !n1_e.first);
8403
92
         }
exprtk::details::range_pack<double>::const_range() const
Line
Count
Source
8400
46
         {
8401
46
           return ( n0_c.first &&  n1_c.first) &&
8402
46
                  (!n0_e.first && !n1_e.first);
8403
46
         }
exprtk::details::range_pack<float>::const_range() const
Line
Count
Source
8400
46
         {
8401
46
           return ( n0_c.first &&  n1_c.first) &&
8402
46
                  (!n0_e.first && !n1_e.first);
8403
46
         }
8404
8405
         bool var_range() const
8406
         {
8407
           return ( n0_e.first &&  n1_e.first) &&
8408
                  (!n0_c.first && !n1_c.first);
8409
         }
8410
8411
         bool operator() (std::size_t& r0, std::size_t& r1,
8412
                          const std::size_t& size = std::numeric_limits<std::size_t>::max()) const
8413
84
         {
8414
84
            if (n0_c.first)
8415
42
               r0 = n0_c.second;
8416
42
            else if (n0_e.first)
8417
42
            {
8418
42
               r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value()));
8419
42
            }
8420
0
            else
8421
0
               return false;
8422
8423
84
            if (n1_c.first)
8424
78
               r1 = n1_c.second;
8425
6
            else if (n1_e.first)
8426
6
            {
8427
6
               r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value()));
8428
6
            }
8429
0
            else
8430
0
               return false;
8431
8432
84
            if (
8433
84
                 (std::numeric_limits<std::size_t>::max() != size) &&
8434
84
                 (std::numeric_limits<std::size_t>::max() == r1  )
8435
84
               )
8436
2
            {
8437
2
               r1 = size;
8438
2
            }
8439
8440
84
            cache.first  = r0;
8441
84
            cache.second = r1;
8442
8443
            #ifndef exprtk_enable_range_runtime_checks
8444
            return (r0 <= r1);
8445
            #else
8446
84
            return range_runtime_check(r0, r1, size);
8447
84
            #endif
8448
84
         }
exprtk::details::range_pack<double>::operator()(unsigned long&, unsigned long&, unsigned long const&) const
Line
Count
Source
8413
42
         {
8414
42
            if (n0_c.first)
8415
21
               r0 = n0_c.second;
8416
21
            else if (n0_e.first)
8417
21
            {
8418
21
               r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value()));
8419
21
            }
8420
0
            else
8421
0
               return false;
8422
8423
42
            if (n1_c.first)
8424
39
               r1 = n1_c.second;
8425
3
            else if (n1_e.first)
8426
3
            {
8427
3
               r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value()));
8428
3
            }
8429
0
            else
8430
0
               return false;
8431
8432
42
            if (
8433
42
                 (std::numeric_limits<std::size_t>::max() != size) &&
8434
42
                 (std::numeric_limits<std::size_t>::max() == r1  )
8435
42
               )
8436
1
            {
8437
1
               r1 = size;
8438
1
            }
8439
8440
42
            cache.first  = r0;
8441
42
            cache.second = r1;
8442
8443
            #ifndef exprtk_enable_range_runtime_checks
8444
            return (r0 <= r1);
8445
            #else
8446
42
            return range_runtime_check(r0, r1, size);
8447
42
            #endif
8448
42
         }
exprtk::details::range_pack<float>::operator()(unsigned long&, unsigned long&, unsigned long const&) const
Line
Count
Source
8413
42
         {
8414
42
            if (n0_c.first)
8415
21
               r0 = n0_c.second;
8416
21
            else if (n0_e.first)
8417
21
            {
8418
21
               r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value()));
8419
21
            }
8420
0
            else
8421
0
               return false;
8422
8423
42
            if (n1_c.first)
8424
39
               r1 = n1_c.second;
8425
3
            else if (n1_e.first)
8426
3
            {
8427
3
               r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value()));
8428
3
            }
8429
0
            else
8430
0
               return false;
8431
8432
42
            if (
8433
42
                 (std::numeric_limits<std::size_t>::max() != size) &&
8434
42
                 (std::numeric_limits<std::size_t>::max() == r1  )
8435
42
               )
8436
1
            {
8437
1
               r1 = size;
8438
1
            }
8439
8440
42
            cache.first  = r0;
8441
42
            cache.second = r1;
8442
8443
            #ifndef exprtk_enable_range_runtime_checks
8444
            return (r0 <= r1);
8445
            #else
8446
42
            return range_runtime_check(r0, r1, size);
8447
42
            #endif
8448
42
         }
8449
8450
         inline std::size_t const_size() const
8451
0
         {
8452
0
            return (n1_c.second - n0_c.second);
8453
0
         }
Unexecuted instantiation: exprtk::details::range_pack<double>::const_size() const
Unexecuted instantiation: exprtk::details::range_pack<float>::const_size() const
8454
8455
         inline std::size_t cache_size() const
8456
20
         {
8457
20
            return (cache.second - cache.first);
8458
20
         }
exprtk::details::range_pack<double>::cache_size() const
Line
Count
Source
8456
10
         {
8457
10
            return (cache.second - cache.first);
8458
10
         }
exprtk::details::range_pack<float>::cache_size() const
Line
Count
Source
8456
10
         {
8457
10
            return (cache.second - cache.first);
8458
10
         }
8459
8460
         std::pair<bool,expression_node_ptr> n0_e;
8461
         std::pair<bool,expression_node_ptr> n1_e;
8462
         std::pair<bool,std::size_t        > n0_c;
8463
         std::pair<bool,std::size_t        > n1_c;
8464
         mutable cached_range_t             cache;
8465
8466
         #ifdef exprtk_enable_range_runtime_checks
8467
         bool range_runtime_check(const std::size_t r0,
8468
                                  const std::size_t r1,
8469
                                  const std::size_t size) const
8470
84
         {
8471
84
            if (r0 > size)
8472
4
            {
8473
4
               throw std::runtime_error("range error: (r0 < 0) || (r0 > size)");
8474
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8475
0
               return false;
8476
4
               #endif
8477
4
            }
8478
8479
80
            if (r1 > size)
8480
0
            {
8481
0
               throw std::runtime_error("range error: (r1 < 0) || (r1 > size)");
8482
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8483
0
               return false;
8484
0
               #endif
8485
0
            }
8486
8487
80
            return (r0 <= r1);
8488
80
         }
exprtk::details::range_pack<double>::range_runtime_check(unsigned long, unsigned long, unsigned long) const
Line
Count
Source
8470
42
         {
8471
42
            if (r0 > size)
8472
2
            {
8473
2
               throw std::runtime_error("range error: (r0 < 0) || (r0 > size)");
8474
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8475
0
               return false;
8476
2
               #endif
8477
2
            }
8478
8479
40
            if (r1 > size)
8480
0
            {
8481
0
               throw std::runtime_error("range error: (r1 < 0) || (r1 > size)");
8482
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8483
0
               return false;
8484
0
               #endif
8485
0
            }
8486
8487
40
            return (r0 <= r1);
8488
40
         }
exprtk::details::range_pack<float>::range_runtime_check(unsigned long, unsigned long, unsigned long) const
Line
Count
Source
8470
42
         {
8471
42
            if (r0 > size)
8472
2
            {
8473
2
               throw std::runtime_error("range error: (r0 < 0) || (r0 > size)");
8474
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8475
0
               return false;
8476
2
               #endif
8477
2
            }
8478
8479
40
            if (r1 > size)
8480
0
            {
8481
0
               throw std::runtime_error("range error: (r1 < 0) || (r1 > size)");
8482
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8483
0
               return false;
8484
0
               #endif
8485
0
            }
8486
8487
40
            return (r0 <= r1);
8488
40
         }
8489
         #endif
8490
      };
8491
8492
      template <typename T>
8493
      class string_base_node;
8494
8495
      template <typename T>
8496
      struct range_data_type
8497
      {
8498
         typedef range_pack<T> range_t;
8499
         typedef string_base_node<T>* strbase_ptr_t;
8500
8501
         range_data_type()
8502
0
         : range(0)
8503
0
         , data (0)
8504
0
         , size (0)
8505
0
         , type_size(0)
8506
0
         , str_node (0)
8507
0
         {}
Unexecuted instantiation: exprtk::details::range_data_type<double>::range_data_type()
Unexecuted instantiation: exprtk::details::range_data_type<float>::range_data_type()
8508
8509
         range_t*      range;
8510
         void*         data;
8511
         std::size_t   size;
8512
         std::size_t   type_size;
8513
         strbase_ptr_t str_node;
8514
      };
8515
8516
      template <typename T> class vector_node;
8517
8518
      template <typename T>
8519
      class vector_interface
8520
      {
8521
      public:
8522
8523
         typedef vector_node<T>*   vector_node_ptr;
8524
         typedef vec_data_store<T> vds_t;
8525
8526
         virtual ~vector_interface()
8527
0
         {}
Unexecuted instantiation: exprtk::details::vector_interface<double>::~vector_interface()
Unexecuted instantiation: exprtk::details::vector_interface<float>::~vector_interface()
8528
8529
         virtual std::size_t size     () const = 0;
8530
8531
         virtual std::size_t base_size() const = 0;
8532
8533
         virtual vector_node_ptr vec  () const = 0;
8534
8535
         virtual vector_node_ptr vec  ()       = 0;
8536
8537
         virtual       vds_t& vds     ()       = 0;
8538
8539
         virtual const vds_t& vds     () const = 0;
8540
8541
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
8542
      };
8543
8544
      template <typename T>
8545
      class vector_node exprtk_final
8546
                        : public expression_node <T>
8547
                        , public vector_interface<T>
8548
      {
8549
      public:
8550
8551
         typedef expression_node<T>* expression_ptr;
8552
         typedef vector_holder<T>    vector_holder_t;
8553
         typedef vector_node<T>*     vector_node_ptr;
8554
         typedef vec_data_store<T>   vds_t;
8555
8556
         explicit vector_node(vector_holder_t* vh)
8557
0
         : vector_holder_(vh)
8558
0
         , vds_((*vector_holder_).size(),(*vector_holder_)[0])
8559
0
         {
8560
0
            vector_holder_->set_ref(&vds_.ref());
8561
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>*)
8562
8563
         vector_node(const vds_t& vds, vector_holder_t* vh)
8564
0
         : vector_holder_(vh)
8565
0
         , vds_(vds)
8566
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>*)
8567
8568
        ~vector_node()
8569
0
         {
8570
0
            assert(valid());
8571
0
            vector_holder_->remove_ref(&vds_.ref());
8572
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::~vector_node()
Unexecuted instantiation: exprtk::details::vector_node<float>::~vector_node()
8573
8574
         inline T value() const exprtk_override
8575
0
         {
8576
0
            return vds().data()[0];
8577
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_node<float>::value() const
8578
8579
         vector_node_ptr vec() const exprtk_override
8580
0
         {
8581
0
            return const_cast<vector_node_ptr>(this);
8582
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vec() const
Unexecuted instantiation: exprtk::details::vector_node<float>::vec() const
8583
8584
         vector_node_ptr vec() exprtk_override
8585
0
         {
8586
0
            return this;
8587
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vec()
Unexecuted instantiation: exprtk::details::vector_node<float>::vec()
8588
8589
         inline typename expression_node<T>::node_type type() const exprtk_override
8590
0
         {
8591
0
            return expression_node<T>::e_vector;
8592
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_node<float>::type() const
8593
8594
         inline bool valid() const exprtk_override
8595
0
         {
8596
0
            return vector_holder_;
8597
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_node<float>::valid() const
8598
8599
         std::size_t size() const exprtk_override
8600
0
         {
8601
0
            return vec_holder().size();
8602
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::size() const
Unexecuted instantiation: exprtk::details::vector_node<float>::size() const
8603
8604
         std::size_t base_size() const exprtk_override
8605
0
         {
8606
0
            return vec_holder().base_size();
8607
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::base_size() const
Unexecuted instantiation: exprtk::details::vector_node<float>::base_size() const
8608
8609
         vds_t& vds() exprtk_override
8610
0
         {
8611
0
            return vds_;
8612
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vds()
Unexecuted instantiation: exprtk::details::vector_node<float>::vds()
8613
8614
         const vds_t& vds() const exprtk_override
8615
0
         {
8616
0
            return vds_;
8617
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vds() const
Unexecuted instantiation: exprtk::details::vector_node<float>::vds() const
8618
8619
         inline vector_holder_t& vec_holder()
8620
0
         {
8621
0
            return (*vector_holder_);
8622
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vec_holder()
Unexecuted instantiation: exprtk::details::vector_node<float>::vec_holder()
8623
8624
         inline vector_holder_t& vec_holder() const
8625
0
         {
8626
0
            return (*vector_holder_);
8627
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vec_holder() const
Unexecuted instantiation: exprtk::details::vector_node<float>::vec_holder() const
8628
8629
      private:
8630
8631
         vector_holder_t* vector_holder_;
8632
         vds_t                      vds_;
8633
      };
8634
8635
      template <typename T>
8636
      class vector_size_node exprtk_final
8637
                        : public expression_node <T>
8638
      {
8639
      public:
8640
8641
         typedef expression_node<T>* expression_ptr;
8642
         typedef vector_holder<T>    vector_holder_t;
8643
8644
         explicit vector_size_node(vector_holder_t* vh)
8645
0
         : vector_holder_(vh)
8646
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>*)
8647
8648
        ~vector_size_node()
8649
0
         {
8650
0
            assert(valid());
8651
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::~vector_size_node()
Unexecuted instantiation: exprtk::details::vector_size_node<float>::~vector_size_node()
8652
8653
         inline T value() const exprtk_override
8654
0
         {
8655
0
            assert(vector_holder_);
8656
0
            return static_cast<T>(vector_holder_->size());
8657
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_size_node<float>::value() const
8658
8659
         inline typename expression_node<T>::node_type type() const exprtk_override
8660
0
         {
8661
0
            return expression_node<T>::e_vecsize;
8662
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_size_node<float>::type() const
8663
8664
         inline bool valid() const exprtk_override
8665
0
         {
8666
0
            return vector_holder_ && vector_holder_->size();
8667
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_size_node<float>::valid() const
8668
8669
         inline vector_holder_t* vec_holder()
8670
0
         {
8671
0
            return vector_holder_;
8672
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::vec_holder()
Unexecuted instantiation: exprtk::details::vector_size_node<float>::vec_holder()
8673
8674
      private:
8675
8676
         vector_holder_t* vector_holder_;
8677
      };
8678
8679
      template <typename T>
8680
      class vector_elem_node exprtk_final
8681
                             : public expression_node<T>
8682
                             , public ivariable      <T>
8683
      {
8684
      public:
8685
8686
         typedef expression_node<T>*            expression_ptr;
8687
         typedef vector_holder<T>               vector_holder_t;
8688
         typedef vector_holder_t*               vector_holder_ptr;
8689
         typedef std::pair<expression_ptr,bool> branch_t;
8690
8691
         vector_elem_node(expression_ptr vec_node,
8692
                          expression_ptr index,
8693
                          vector_holder_ptr vec_holder)
8694
0
         : vector_holder_(vec_holder)
8695
0
         , vector_base_((*vec_holder)[0])
8696
0
         {
8697
0
            construct_branch_pair(vector_node_, vec_node);
8698
0
            construct_branch_pair(index_      , index   );
8699
0
            assert(valid());
8700
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>*)
8701
8702
         inline T value() const exprtk_override
8703
0
         {
8704
0
            return *access_vector();
8705
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::value() const
8706
8707
         inline T& ref() exprtk_override
8708
0
         {
8709
0
            return *access_vector();
8710
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::ref()
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::ref()
8711
8712
         inline const T& ref() const exprtk_override
8713
0
         {
8714
0
            return *access_vector();
8715
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::ref() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::ref() const
8716
8717
         inline typename expression_node<T>::node_type type() const exprtk_override
8718
0
         {
8719
0
            return expression_node<T>::e_vecelem;
8720
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::type() const
8721
8722
         inline bool valid() const exprtk_override
8723
0
         {
8724
0
            return
8725
0
               vector_holder_        &&
8726
0
               index_.first          &&
8727
0
               vector_node_.first    &&
8728
0
               index_.first->valid() &&
8729
0
               vector_node_.first->valid();
8730
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::valid() const
8731
8732
         inline vector_holder_t& vec_holder()
8733
0
         {
8734
0
            return (*vector_holder_);
8735
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::vec_holder()
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::vec_holder()
8736
8737
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8738
0
         {
8739
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
8740
0
            expression_node<T>::ndb_t::collect(index_      , node_delete_list);
8741
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>**> >&)
8742
8743
         std::size_t node_depth() const exprtk_override
8744
0
         {
8745
0
            return expression_node<T>::ndb_t::compute_node_depth
8746
0
               (vector_node_, index_);
8747
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::node_depth() const
8748
8749
      private:
8750
8751
         inline T* access_vector() const
8752
0
         {
8753
0
            vector_node_.first->value();
8754
0
            return (vector_base_ + details::numeric::to_uint64(index_.first->value()));
8755
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::access_vector() const
8756
8757
         vector_holder_ptr vector_holder_;
8758
         T* vector_base_;
8759
         branch_t vector_node_;
8760
         branch_t index_;
8761
      };
8762
8763
      template <typename T>
8764
      class vector_celem_node exprtk_final
8765
                              : public expression_node<T>
8766
                              , public ivariable      <T>
8767
      {
8768
      public:
8769
8770
         typedef expression_node<T>*            expression_ptr;
8771
         typedef vector_holder<T>               vector_holder_t;
8772
         typedef vector_holder_t*               vector_holder_ptr;
8773
         typedef std::pair<expression_ptr,bool> branch_t;
8774
8775
         vector_celem_node(expression_ptr vec_node,
8776
                           const std::size_t index,
8777
                           vector_holder_ptr vec_holder)
8778
0
         : index_(index)
8779
0
         , vector_holder_(vec_holder)
8780
0
         , vector_base_((*vec_holder)[0])
8781
0
         {
8782
0
            construct_branch_pair(vector_node_, vec_node);
8783
0
            assert(valid());
8784
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>*)
8785
8786
         inline T value() const exprtk_override
8787
0
         {
8788
0
            return *access_vector();
8789
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::value() const
8790
8791
         inline T& ref() exprtk_override
8792
0
         {
8793
0
            return *access_vector();
8794
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::ref()
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::ref()
8795
8796
         inline const T& ref() const exprtk_override
8797
0
         {
8798
0
            return *access_vector();
8799
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::ref() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::ref() const
8800
8801
         inline typename expression_node<T>::node_type type() const exprtk_override
8802
0
         {
8803
0
            return expression_node<T>::e_veccelem;
8804
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::type() const
8805
8806
         inline bool valid() const exprtk_override
8807
0
         {
8808
0
            return
8809
0
               vector_holder_     &&
8810
0
               vector_node_.first &&
8811
0
               vector_node_.first->valid();
8812
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::valid() const
8813
8814
         inline vector_holder_t& vec_holder()
8815
         {
8816
            return (*vector_holder_);
8817
         }
8818
8819
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8820
0
         {
8821
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
8822
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>**> >&)
8823
8824
         std::size_t node_depth() const exprtk_override
8825
0
         {
8826
0
            return expression_node<T>::ndb_t::compute_node_depth(vector_node_);
8827
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::node_depth() const
8828
8829
      private:
8830
8831
         inline T* access_vector() const
8832
0
         {
8833
0
            vector_node_.first->value();
8834
0
            return (vector_base_ + index_);
8835
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::access_vector() const
8836
8837
         const std::size_t index_;
8838
         vector_holder_ptr vector_holder_;
8839
         T* vector_base_;
8840
         branch_t vector_node_;
8841
      };
8842
8843
      template <typename T>
8844
      class vector_elem_rtc_node exprtk_final
8845
                                 : public expression_node<T>
8846
                                 , public ivariable      <T>
8847
      {
8848
      public:
8849
8850
         typedef expression_node<T>*            expression_ptr;
8851
         typedef vector_holder<T>               vector_holder_t;
8852
         typedef vector_holder_t*               vector_holder_ptr;
8853
         typedef std::pair<expression_ptr,bool> branch_t;
8854
8855
         vector_elem_rtc_node(expression_ptr vec_node,
8856
                              expression_ptr index,
8857
                              vector_holder_ptr vec_holder,
8858
                              vector_access_runtime_check_ptr vec_rt_chk)
8859
0
         : vector_holder_(vec_holder)
8860
0
         , vector_base_((*vec_holder)[0])
8861
0
         , vec_rt_chk_(vec_rt_chk)
8862
0
         , max_vector_index_(vector_holder_->size() - 1)
8863
0
         {
8864
0
            construct_branch_pair(vector_node_, vec_node);
8865
0
            construct_branch_pair(index_      , index   );
8866
0
            assert(valid());
8867
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*)
8868
8869
         inline T value() const exprtk_override
8870
0
         {
8871
0
            return *access_vector();
8872
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::value() const
8873
8874
         inline T& ref() exprtk_override
8875
0
         {
8876
0
            return *access_vector();
8877
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::ref()
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::ref()
8878
8879
         inline const T& ref() const exprtk_override
8880
0
         {
8881
0
            return *access_vector();
8882
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::ref() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::ref() const
8883
8884
         inline typename expression_node<T>::node_type type() const exprtk_override
8885
0
         {
8886
0
            return expression_node<T>::e_vecelemrtc;
8887
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::type() const
8888
8889
         inline bool valid() const exprtk_override
8890
0
         {
8891
0
            return
8892
0
               vector_holder_        &&
8893
0
               index_.first          &&
8894
0
               vector_node_.first    &&
8895
0
               index_.first->valid() &&
8896
0
               vector_node_.first->valid();
8897
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::valid() const
8898
8899
         inline vector_holder_t& vec_holder()
8900
         {
8901
            return (*vector_holder_);
8902
         }
8903
8904
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8905
0
         {
8906
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
8907
0
            expression_node<T>::ndb_t::collect(index_,       node_delete_list);
8908
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>**> >&)
8909
8910
         std::size_t node_depth() const exprtk_override
8911
0
         {
8912
0
            return expression_node<T>::ndb_t::compute_node_depth
8913
0
               (vector_node_, index_);
8914
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
8915
8916
      private:
8917
8918
         inline T* access_vector() const
8919
0
         {
8920
0
            const _uint64_t index = details::numeric::to_uint64(index_.first->value());
8921
0
            vector_node_.first->value();
8922
8923
0
            if (index <= max_vector_index_)
8924
0
            {
8925
0
               return (vector_holder_->data() + index);
8926
0
            }
8927
8928
0
            assert(vec_rt_chk_);
8929
8930
0
            vector_access_runtime_check::violation_context context;
8931
0
            context.base_ptr   = reinterpret_cast<void*>(vector_base_);
8932
0
            context.end_ptr    = reinterpret_cast<void*>(vector_base_ + vector_holder_->size());
8933
0
            context.access_ptr = reinterpret_cast<void*>(vector_base_ + index);
8934
0
            context.type_size  = sizeof(T);
8935
8936
0
            return vec_rt_chk_->handle_runtime_violation(context) ?
8937
0
               reinterpret_cast<T*>(context.access_ptr) :
8938
0
               vector_base_ ;
8939
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
8940
8941
         vector_holder_ptr vector_holder_;
8942
         T*                vector_base_;
8943
         branch_t          vector_node_;
8944
         branch_t          index_;
8945
         vector_access_runtime_check_ptr vec_rt_chk_;
8946
         const std::size_t max_vector_index_;
8947
      };
8948
8949
      template <typename T>
8950
      class vector_celem_rtc_node exprtk_final
8951
                                 : public expression_node<T>
8952
                                 , public ivariable      <T>
8953
      {
8954
      public:
8955
8956
         typedef expression_node<T>*            expression_ptr;
8957
         typedef vector_holder<T>               vector_holder_t;
8958
         typedef vector_holder_t*               vector_holder_ptr;
8959
         typedef std::pair<expression_ptr,bool> branch_t;
8960
8961
         vector_celem_rtc_node(expression_ptr vec_node,
8962
                               const std::size_t index,
8963
                               vector_holder_ptr vec_holder,
8964
                               vector_access_runtime_check_ptr vec_rt_chk)
8965
0
         : index_(index)
8966
0
         , max_vector_index_(vec_holder->size() - 1)
8967
0
         , vector_holder_(vec_holder)
8968
0
         , vector_base_((*vec_holder)[0])
8969
0
         , vec_rt_chk_(vec_rt_chk)
8970
0
         {
8971
0
            construct_branch_pair(vector_node_, vec_node);
8972
0
            assert(valid());
8973
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*)
8974
8975
         inline T value() const exprtk_override
8976
0
         {
8977
0
            return *access_vector();
8978
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::value() const
8979
8980
         inline T& ref() exprtk_override
8981
0
         {
8982
0
            return *access_vector();
8983
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::ref()
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::ref()
8984
8985
         inline const T& ref() const exprtk_override
8986
0
         {
8987
0
            return *access_vector();
8988
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::ref() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::ref() const
8989
8990
         inline typename expression_node<T>::node_type type() const exprtk_override
8991
0
         {
8992
0
            return expression_node<T>::e_veccelemrtc;
8993
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::type() const
8994
8995
         inline bool valid() const exprtk_override
8996
0
         {
8997
0
            return
8998
0
               vector_holder_     &&
8999
0
               vector_node_.first &&
9000
0
               vector_node_.first->valid();
9001
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::valid() const
9002
9003
         inline vector_holder_t& vec_holder()
9004
         {
9005
            return (*vector_holder_);
9006
         }
9007
9008
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9009
0
         {
9010
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9011
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>**> >&)
9012
9013
         std::size_t node_depth() const exprtk_override
9014
0
         {
9015
0
            return expression_node<T>::ndb_t::compute_node_depth(vector_node_);
9016
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
9017
9018
      private:
9019
9020
         inline T* access_vector() const
9021
0
         {
9022
0
            vector_node_.first->value();
9023
9024
0
            if (index_ <= max_vector_index_)
9025
0
            {
9026
0
               return (vector_holder_->data() + index_);
9027
0
            }
9028
9029
0
            assert(vec_rt_chk_);
9030
9031
0
            vector_access_runtime_check::violation_context context;
9032
0
            context.base_ptr   = reinterpret_cast<void*>(vector_base_);
9033
0
            context.end_ptr    = reinterpret_cast<void*>(vector_base_ + vector_holder_->size());
9034
0
            context.access_ptr = reinterpret_cast<void*>(vector_base_ + index_);
9035
0
            context.type_size  = sizeof(T);
9036
9037
0
            return vec_rt_chk_->handle_runtime_violation(context) ?
9038
0
               reinterpret_cast<T*>(context.access_ptr) :
9039
0
               vector_base_ ;
9040
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
9041
9042
         const std::size_t index_;
9043
         const std::size_t max_vector_index_;
9044
         vector_holder_ptr vector_holder_;
9045
         T*                vector_base_;
9046
         branch_t          vector_node_;
9047
         vector_access_runtime_check_ptr vec_rt_chk_;
9048
      };
9049
9050
      template <typename T>
9051
      class rebasevector_elem_node exprtk_final
9052
                                   : public expression_node<T>
9053
                                   , public ivariable      <T>
9054
      {
9055
      public:
9056
9057
         typedef expression_node<T>*            expression_ptr;
9058
         typedef vector_holder<T>               vector_holder_t;
9059
         typedef vector_holder_t*               vector_holder_ptr;
9060
         typedef vec_data_store<T>              vds_t;
9061
         typedef std::pair<expression_ptr,bool> branch_t;
9062
9063
         rebasevector_elem_node(expression_ptr vec_node,
9064
                                expression_ptr index,
9065
                                vector_holder_ptr vec_holder)
9066
0
         : vector_holder_(vec_holder)
9067
0
         {
9068
0
            construct_branch_pair(vector_node_, vec_node);
9069
0
            construct_branch_pair(index_      , index   );
9070
0
            assert(valid());
9071
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>*)
9072
9073
         inline T value() const exprtk_override
9074
0
         {
9075
0
            return *access_vector();
9076
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::value() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::value() const
9077
9078
         inline T& ref() exprtk_override
9079
0
         {
9080
0
            return *access_vector();
9081
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::ref()
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::ref()
9082
9083
         inline const T& ref() const exprtk_override
9084
0
         {
9085
0
            return *access_vector();
9086
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::ref() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::ref() const
9087
9088
         inline typename expression_node<T>::node_type type() const exprtk_override
9089
0
         {
9090
0
            return expression_node<T>::e_rbvecelem;
9091
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::type() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::type() const
9092
9093
         inline bool valid() const exprtk_override
9094
0
         {
9095
0
            return
9096
0
               vector_holder_        &&
9097
0
               index_.first          &&
9098
0
               vector_node_.first    &&
9099
0
               index_.first->valid() &&
9100
0
               vector_node_.first->valid();
9101
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::valid() const
9102
9103
         inline vector_holder_t& vec_holder()
9104
         {
9105
            return (*vector_holder_);
9106
         }
9107
9108
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9109
0
         {
9110
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9111
0
            expression_node<T>::ndb_t::collect(index_,       node_delete_list);
9112
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>**> >&)
9113
9114
         std::size_t node_depth() const exprtk_override
9115
0
         {
9116
0
            return expression_node<T>::ndb_t::compute_node_depth
9117
0
               (vector_node_, index_);
9118
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::node_depth() const
9119
9120
      private:
9121
9122
         inline T* access_vector() const
9123
0
         {
9124
0
            vector_node_.first->value();
9125
0
            return (vector_holder_->data() + details::numeric::to_uint64(index_.first->value()));
9126
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::access_vector() const
9127
9128
         vector_holder_ptr vector_holder_;
9129
         branch_t          vector_node_;
9130
         branch_t          index_;
9131
      };
9132
9133
      template <typename T>
9134
      class rebasevector_celem_node exprtk_final
9135
                                    : public expression_node<T>
9136
                                    , public ivariable      <T>
9137
      {
9138
      public:
9139
9140
         typedef expression_node<T>* expression_ptr;
9141
         typedef vector_holder<T>    vector_holder_t;
9142
         typedef vector_holder_t*    vector_holder_ptr;
9143
         typedef std::pair<expression_ptr,bool> branch_t;
9144
9145
         rebasevector_celem_node(expression_ptr vec_node,
9146
                                 const std::size_t index,
9147
                                 vector_holder_ptr vec_holder)
9148
0
         : index_(index)
9149
0
         , vector_holder_(vec_holder)
9150
0
         {
9151
0
            construct_branch_pair(vector_node_, vec_node);
9152
0
            assert(valid());
9153
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>*)
9154
9155
         inline T value() const exprtk_override
9156
0
         {
9157
0
            vector_node_.first->value();
9158
0
            return ref();;
9159
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::value() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::value() const
9160
9161
         inline T& ref() exprtk_override
9162
0
         {
9163
0
            return *(vector_holder_->data() + index_);
9164
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::ref()
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::ref()
9165
9166
         inline const T& ref() const exprtk_override
9167
0
         {
9168
0
            return *(vector_holder_->data() + index_);
9169
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::ref() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::ref() const
9170
9171
         inline typename expression_node<T>::node_type type() const exprtk_override
9172
0
         {
9173
0
            return expression_node<T>::e_rbveccelem;
9174
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::type() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::type() const
9175
9176
         inline bool valid() const exprtk_override
9177
0
         {
9178
0
            return
9179
0
               vector_holder_     &&
9180
0
               vector_node_.first &&
9181
0
               vector_node_.first->valid();
9182
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::valid() const
9183
9184
         inline vector_holder_t& vec_holder()
9185
         {
9186
            return (*vector_holder_);
9187
         }
9188
9189
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9190
0
         {
9191
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9192
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>**> >&)
9193
9194
         std::size_t node_depth() const exprtk_override
9195
0
         {
9196
0
            return expression_node<T>::ndb_t::compute_node_depth(vector_node_);
9197
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::node_depth() const
9198
9199
      private:
9200
9201
         const std::size_t index_;
9202
         vector_holder_ptr vector_holder_;
9203
         branch_t          vector_node_;
9204
      };
9205
9206
      template <typename T>
9207
      class rebasevector_elem_rtc_node exprtk_final
9208
                                       : public expression_node<T>
9209
                                       , public ivariable      <T>
9210
      {
9211
      public:
9212
9213
         typedef expression_node<T>*            expression_ptr;
9214
         typedef vector_holder<T>               vector_holder_t;
9215
         typedef vector_holder_t*               vector_holder_ptr;
9216
         typedef std::pair<expression_ptr,bool> branch_t;
9217
9218
         rebasevector_elem_rtc_node(expression_ptr vec_node,
9219
                                    expression_ptr index,
9220
                                    vector_holder_ptr vec_holder,
9221
                                    vector_access_runtime_check_ptr vec_rt_chk)
9222
0
         : vector_holder_(vec_holder)
9223
0
         , vec_rt_chk_(vec_rt_chk)
9224
0
         {
9225
0
            construct_branch_pair(vector_node_, vec_node);
9226
0
            construct_branch_pair(index_      , index   );
9227
0
            assert(valid());
9228
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*)
9229
9230
         inline T value() const exprtk_override
9231
0
         {
9232
0
            return *access_vector();
9233
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::value() const
9234
9235
         inline T& ref() exprtk_override
9236
0
         {
9237
0
            return *access_vector();
9238
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::ref()
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::ref()
9239
9240
         inline const T& ref() const exprtk_override
9241
0
         {
9242
0
            return *access_vector();
9243
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::ref() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::ref() const
9244
9245
         inline typename expression_node<T>::node_type type() const exprtk_override
9246
0
         {
9247
0
            return expression_node<T>::e_rbvecelemrtc;
9248
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::type() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::type() const
9249
9250
         inline bool valid() const exprtk_override
9251
0
         {
9252
0
            return
9253
0
               vector_holder_        &&
9254
0
               index_.first          &&
9255
0
               vector_node_.first    &&
9256
0
               index_.first->valid() &&
9257
0
               vector_node_.first->valid();
9258
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::valid() const
9259
9260
         inline vector_holder_t& vec_holder()
9261
         {
9262
            return (*vector_holder_);
9263
         }
9264
9265
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9266
0
         {
9267
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9268
0
            expression_node<T>::ndb_t::collect(index_      , node_delete_list);
9269
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>**> >&)
9270
9271
         std::size_t node_depth() const exprtk_override
9272
0
         {
9273
0
            return expression_node<T>::ndb_t::compute_node_depth
9274
0
               (vector_node_, index_);
9275
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
9276
9277
      private:
9278
9279
         inline T* access_vector() const
9280
0
         {
9281
0
            vector_node_.first->value();
9282
0
            const _uint64_t index = details::numeric::to_uint64(index_.first->value());
9283
9284
0
            if (index <= (vector_holder_->size() - 1))
9285
0
            {
9286
0
               return (vector_holder_->data() + index);
9287
0
            }
9288
9289
0
            assert(vec_rt_chk_);
9290
9291
0
            vector_access_runtime_check::violation_context context;
9292
0
            context.base_ptr   = reinterpret_cast<void*>(vector_holder_->data());
9293
0
            context.end_ptr    = reinterpret_cast<void*>(vector_holder_->data() + vector_holder_->size());
9294
0
            context.access_ptr = reinterpret_cast<void*>(vector_holder_->data() + index);
9295
0
            context.type_size  = sizeof(T);
9296
9297
0
            return vec_rt_chk_->handle_runtime_violation(context) ?
9298
0
                   reinterpret_cast<T*>(context.access_ptr) :
9299
0
                   vector_holder_->data() ;
9300
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
9301
9302
         vector_holder_ptr vector_holder_;
9303
         branch_t          vector_node_;
9304
         branch_t          index_;
9305
         vector_access_runtime_check_ptr vec_rt_chk_;
9306
      };
9307
9308
      template <typename T>
9309
      class rebasevector_celem_rtc_node exprtk_final
9310
                                    : public expression_node<T>
9311
                                    , public ivariable      <T>
9312
      {
9313
      public:
9314
9315
         typedef expression_node<T>*            expression_ptr;
9316
         typedef vector_holder<T>               vector_holder_t;
9317
         typedef vector_holder_t*               vector_holder_ptr;
9318
         typedef std::pair<expression_ptr,bool> branch_t;
9319
9320
         rebasevector_celem_rtc_node(expression_ptr vec_node,
9321
                                     const std::size_t index,
9322
                                     vector_holder_ptr vec_holder,
9323
                                     vector_access_runtime_check_ptr vec_rt_chk)
9324
0
         : index_(index)
9325
0
         , vector_holder_(vec_holder)
9326
0
         , vector_base_((*vec_holder)[0])
9327
0
         , vec_rt_chk_(vec_rt_chk)
9328
0
         {
9329
0
            construct_branch_pair(vector_node_, vec_node);
9330
0
            assert(valid());
9331
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*)
9332
9333
         inline T value() const exprtk_override
9334
0
         {
9335
0
            return *access_vector();
9336
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::value() const
9337
9338
         inline T& ref() exprtk_override
9339
0
         {
9340
0
            return *access_vector();
9341
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::ref()
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::ref()
9342
9343
         inline const T& ref() const exprtk_override
9344
0
         {
9345
0
            return *access_vector();
9346
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::ref() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::ref() const
9347
9348
         inline typename expression_node<T>::node_type type() const exprtk_override
9349
0
         {
9350
0
            return expression_node<T>::e_rbveccelemrtc;
9351
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::type() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::type() const
9352
9353
         inline bool valid() const exprtk_override
9354
0
         {
9355
0
            return
9356
0
               vector_holder_     &&
9357
0
               vector_node_.first &&
9358
0
               vector_node_.first->valid();
9359
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::valid() const
9360
9361
         inline vector_holder_t& vec_holder()
9362
         {
9363
            return (*vector_holder_);
9364
         }
9365
9366
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9367
0
         {
9368
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9369
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>**> >&)
9370
9371
         std::size_t node_depth() const exprtk_override
9372
0
         {
9373
0
            return expression_node<T>::ndb_t::compute_node_depth(vector_node_);
9374
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
9375
9376
      private:
9377
9378
         inline T* access_vector() const
9379
0
         {
9380
0
            vector_node_.first->value();
9381
9382
0
            if (index_ <= vector_holder_->size() - 1)
9383
0
            {
9384
0
               return (vector_holder_->data() + index_);
9385
0
            }
9386
9387
0
            assert(vec_rt_chk_);
9388
9389
0
            vector_access_runtime_check::violation_context context;
9390
0
            context.base_ptr   = reinterpret_cast<void*>(vector_base_);
9391
0
            context.end_ptr    = reinterpret_cast<void*>(vector_base_ + vector_holder_->size());
9392
0
            context.access_ptr = reinterpret_cast<void*>(vector_base_ + index_);
9393
0
            context.type_size  = sizeof(T);
9394
9395
0
            return vec_rt_chk_->handle_runtime_violation(context) ?
9396
0
               reinterpret_cast<T*>(context.access_ptr) :
9397
0
               vector_base_ ;
9398
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
9399
9400
         const std::size_t index_;
9401
         vector_holder_ptr vector_holder_;
9402
         T*                vector_base_;
9403
         branch_t          vector_node_;
9404
         vector_access_runtime_check_ptr vec_rt_chk_;
9405
      };
9406
9407
      template <typename T>
9408
      class vector_initialisation_node exprtk_final : public expression_node<T>
9409
      {
9410
      public:
9411
9412
         typedef expression_node<T>* expression_ptr;
9413
9414
         vector_initialisation_node(T* vector_base,
9415
                                    const std::size_t& size,
9416
                                    const std::vector<expression_ptr>& initialiser_list,
9417
                                    const bool single_value_initialse)
9418
0
         : vector_base_(vector_base)
9419
0
         , initialiser_list_(initialiser_list)
9420
0
         , size_(size)
9421
0
         , single_value_initialse_(single_value_initialse)
9422
0
         , zero_value_initialse_(false)
9423
0
         , const_nonzero_literal_value_initialse_(false)
9424
0
         , single_initialiser_value_(T(0))
9425
0
         {
9426
0
            if (single_value_initialse_)
9427
0
            {
9428
0
               if (initialiser_list_.empty())
9429
0
                  zero_value_initialse_ = true;
9430
0
               else if (
9431
0
                         (initialiser_list_.size() == 1) &&
9432
0
                         details::is_constant_node(initialiser_list_[0]) &&
9433
0
                         (T(0) == initialiser_list_[0]->value())
9434
0
                       )
9435
0
               {
9436
0
                  zero_value_initialse_ = true;
9437
0
               }
9438
0
               else
9439
0
               {
9440
0
                  assert(initialiser_list_.size() == 1);
9441
9442
0
                  if (details::is_constant_node(initialiser_list_[0]))
9443
0
                  {
9444
0
                     const_nonzero_literal_value_initialse_ = true;
9445
0
                     single_initialiser_value_ = initialiser_list_[0]->value();
9446
0
                     assert(T(0) != single_initialiser_value_);
9447
0
                  }
9448
0
               }
9449
0
            }
9450
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)
9451
9452
         inline T value() const exprtk_override
9453
0
         {
9454
0
            if (single_value_initialse_)
9455
0
            {
9456
0
               if (zero_value_initialse_)
9457
0
               {
9458
0
                  details::set_zero_value(vector_base_, size_);
9459
0
               }
9460
0
               else if (const_nonzero_literal_value_initialse_)
9461
0
               {
9462
0
                  for (std::size_t i = 0; i < size_; ++i)
9463
0
                  {
9464
0
                     *(vector_base_ + i) = single_initialiser_value_;
9465
0
                  }
9466
0
               }
9467
0
               else
9468
0
               {
9469
0
                  for (std::size_t i = 0; i < size_; ++i)
9470
0
                  {
9471
0
                     *(vector_base_ + i) = initialiser_list_[0]->value();
9472
0
                  }
9473
0
               }
9474
0
            }
9475
0
            else
9476
0
            {
9477
0
               const std::size_t initialiser_list_size = initialiser_list_.size();
9478
9479
0
               for (std::size_t i = 0; i < initialiser_list_size; ++i)
9480
0
               {
9481
0
                  *(vector_base_ + i) = initialiser_list_[i]->value();
9482
0
               }
9483
9484
0
               if (initialiser_list_size < size_)
9485
0
               {
9486
0
                  details::set_zero_value(
9487
0
                     vector_base_ + initialiser_list_size,
9488
0
                     (size_ - initialiser_list_size));
9489
0
               }
9490
0
            }
9491
9492
0
            return *(vector_base_);
9493
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::value() const
9494
9495
         inline typename expression_node<T>::node_type type() const exprtk_override
9496
0
         {
9497
0
            return expression_node<T>::e_vecinit;
9498
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::type() const
9499
9500
         inline bool valid() const exprtk_override
9501
0
         {
9502
0
            return vector_base_;
9503
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::valid() const
9504
9505
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9506
0
         {
9507
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9508
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>**> >&)
9509
9510
         std::size_t node_depth() const exprtk_override
9511
0
         {
9512
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9513
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::node_depth() const
9514
9515
      private:
9516
9517
         vector_initialisation_node(const vector_initialisation_node<T>&) exprtk_delete;
9518
         vector_initialisation_node<T>& operator=(const vector_initialisation_node<T>&) exprtk_delete;
9519
9520
         mutable T* vector_base_;
9521
         std::vector<expression_ptr> initialiser_list_;
9522
         const std::size_t size_;
9523
         const bool single_value_initialse_;
9524
         bool zero_value_initialse_;
9525
         bool const_nonzero_literal_value_initialse_;
9526
         T single_initialiser_value_;
9527
      };
9528
9529
      template <typename T>
9530
      class vector_init_zero_value_node exprtk_final : public expression_node<T>
9531
      {
9532
      public:
9533
9534
         typedef expression_node<T>* expression_ptr;
9535
9536
         vector_init_zero_value_node(T* vector_base,
9537
                                     const std::size_t& size,
9538
                                     const std::vector<expression_ptr>& initialiser_list)
9539
0
         : vector_base_(vector_base)
9540
0
         , size_(size)
9541
0
         , initialiser_list_(initialiser_list)
9542
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&)
9543
9544
         inline T value() const exprtk_override
9545
0
         {
9546
0
            details::set_zero_value(vector_base_, size_);
9547
0
            return *(vector_base_);
9548
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
9549
9550
         inline typename expression_node<T>::node_type type() const exprtk_override
9551
0
         {
9552
0
            return expression_node<T>::e_vecinit;
9553
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
9554
9555
         inline bool valid() const exprtk_override
9556
0
         {
9557
0
            return vector_base_;
9558
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
9559
9560
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9561
0
         {
9562
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9563
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>**> >&)
9564
9565
         std::size_t node_depth() const exprtk_override
9566
0
         {
9567
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9568
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
9569
9570
      private:
9571
9572
         vector_init_zero_value_node(const vector_init_zero_value_node<T>&) exprtk_delete;
9573
         vector_init_zero_value_node<T>& operator=(const vector_init_zero_value_node<T>&) exprtk_delete;
9574
9575
         mutable T* vector_base_;
9576
         const std::size_t size_;
9577
         std::vector<expression_ptr> initialiser_list_;
9578
      };
9579
9580
      template <typename T>
9581
      class vector_init_single_constvalue_node exprtk_final : public expression_node<T>
9582
      {
9583
      public:
9584
9585
         typedef expression_node<T>* expression_ptr;
9586
9587
         vector_init_single_constvalue_node(T* vector_base,
9588
                                            const std::size_t& size,
9589
                                            const std::vector<expression_ptr>& initialiser_list)
9590
0
         : vector_base_(vector_base)
9591
0
         , size_(size)
9592
0
         , initialiser_list_(initialiser_list)
9593
0
         {
9594
0
            single_initialiser_value_ = initialiser_list_[0]->value();
9595
0
            assert(valid());
9596
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&)
9597
9598
         inline T value() const exprtk_override
9599
0
         {
9600
0
            for (std::size_t i = 0; i < size_; ++i)
9601
0
            {
9602
0
               *(vector_base_ + i) = single_initialiser_value_;
9603
0
            }
9604
9605
0
            return *(vector_base_);
9606
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
9607
9608
         inline typename expression_node<T>::node_type type() const exprtk_override
9609
0
         {
9610
0
            return expression_node<T>::e_vecinit;
9611
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
9612
9613
         inline bool valid() const exprtk_override
9614
0
         {
9615
0
            return vector_base_ &&
9616
0
                   (initialiser_list_.size() == 1) &&
9617
0
                   (details::is_constant_node(initialiser_list_[0])) &&
9618
0
                   (single_initialiser_value_ != T(0));
9619
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
9620
9621
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9622
0
         {
9623
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9624
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>**> >&)
9625
9626
         std::size_t node_depth() const exprtk_override
9627
0
         {
9628
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9629
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
9630
9631
      private:
9632
9633
         vector_init_single_constvalue_node(const vector_init_single_constvalue_node<T>&) exprtk_delete;
9634
         vector_init_single_constvalue_node<T>& operator=(const vector_init_single_constvalue_node<T>&) exprtk_delete;
9635
9636
         mutable T* vector_base_;
9637
         const std::size_t size_;
9638
         std::vector<expression_ptr> initialiser_list_;
9639
         T single_initialiser_value_;
9640
      };
9641
9642
      template <typename T>
9643
      class vector_init_single_value_node exprtk_final : public expression_node<T>
9644
      {
9645
      public:
9646
9647
         typedef expression_node<T>* expression_ptr;
9648
9649
         vector_init_single_value_node(T* vector_base,
9650
                                       const std::size_t& size,
9651
                                       const std::vector<expression_ptr>& initialiser_list)
9652
0
         : vector_base_(vector_base)
9653
0
         , size_(size)
9654
0
         , initialiser_list_(initialiser_list)
9655
0
         {
9656
0
            assert(valid());
9657
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&)
9658
9659
         inline T value() const exprtk_override
9660
0
         {
9661
0
            expression_node<T>& node = *initialiser_list_[0];
9662
9663
0
            for (std::size_t i = 0; i < size_; ++i)
9664
0
            {
9665
0
               *(vector_base_ + i) = node.value();
9666
0
            }
9667
9668
0
            return *(vector_base_);
9669
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
9670
9671
         inline typename expression_node<T>::node_type type() const exprtk_override
9672
0
         {
9673
0
            return expression_node<T>::e_vecinit;
9674
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
9675
9676
         inline bool valid() const exprtk_override
9677
0
         {
9678
0
            return vector_base_ &&
9679
0
                   (initialiser_list_.size() == 1) &&
9680
0
                   !details::is_constant_node(initialiser_list_[0]);
9681
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
9682
9683
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9684
0
         {
9685
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9686
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>**> >&)
9687
9688
         std::size_t node_depth() const exprtk_override
9689
0
         {
9690
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9691
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
9692
9693
      private:
9694
9695
         vector_init_single_value_node(const vector_init_single_value_node<T>&) exprtk_delete;
9696
         vector_init_single_value_node<T>& operator=(const vector_init_single_value_node<T>&) exprtk_delete;
9697
9698
         mutable T* vector_base_;
9699
         const std::size_t size_;
9700
         std::vector<expression_ptr> initialiser_list_;
9701
      };
9702
9703
      template <typename T>
9704
      class vector_init_iota_constconst_node exprtk_final : public expression_node<T>
9705
      {
9706
      public:
9707
9708
         typedef expression_node<T>* expression_ptr;
9709
9710
         vector_init_iota_constconst_node(T* vector_base,
9711
                                          const std::size_t& size,
9712
                                          const std::vector<expression_ptr>& initialiser_list)
9713
0
         : vector_base_(vector_base)
9714
0
         , size_(size)
9715
0
         , initialiser_list_(initialiser_list)
9716
0
         {
9717
0
            base_value_      = initialiser_list_[0]->value();
9718
0
            increment_value_ = initialiser_list_[1]->value();
9719
9720
0
            assert(valid());
9721
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&)
9722
9723
         inline T value() const exprtk_override
9724
0
         {
9725
0
            T value = base_value_;
9726
9727
0
            for (std::size_t i = 0; i < size_; ++i, value += increment_value_)
9728
0
            {
9729
0
               *(vector_base_ + i) = value;
9730
0
            }
9731
9732
0
            return *(vector_base_);
9733
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
9734
9735
         inline typename expression_node<T>::node_type type() const exprtk_override
9736
0
         {
9737
0
            return expression_node<T>::e_vecinit;
9738
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
9739
9740
         inline bool valid() const exprtk_override
9741
0
         {
9742
0
            return vector_base_ &&
9743
0
                   (initialiser_list_.size() == 2) &&
9744
0
                   (details::is_constant_node(initialiser_list_[0])) &&
9745
0
                   (details::is_constant_node(initialiser_list_[1])) ;
9746
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
9747
9748
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9749
0
         {
9750
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9751
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>**> >&)
9752
9753
         std::size_t node_depth() const exprtk_override
9754
0
         {
9755
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9756
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
9757
9758
      private:
9759
9760
         vector_init_iota_constconst_node(const vector_init_iota_constconst_node<T>&) exprtk_delete;
9761
         vector_init_iota_constconst_node<T>& operator=(const vector_init_iota_constconst_node<T>&) exprtk_delete;
9762
9763
         mutable T* vector_base_;
9764
         const std::size_t size_;
9765
         std::vector<expression_ptr> initialiser_list_;
9766
         T base_value_;
9767
         T increment_value_;
9768
      };
9769
9770
      template <typename T>
9771
      class vector_init_iota_constnconst_node exprtk_final : public expression_node<T>
9772
      {
9773
      public:
9774
9775
         typedef expression_node<T>* expression_ptr;
9776
9777
         vector_init_iota_constnconst_node(T* vector_base,
9778
                                           const std::size_t& size,
9779
                                           const std::vector<expression_ptr>& initialiser_list)
9780
0
         : vector_base_(vector_base)
9781
0
         , size_(size)
9782
0
         , initialiser_list_(initialiser_list)
9783
0
         {
9784
0
            assert(valid());
9785
0
            base_value_ = initialiser_list_[0]->value();
9786
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&)
9787
9788
         inline T value() const exprtk_override
9789
0
         {
9790
0
            T value = base_value_;
9791
0
            expression_node<T>& increment = *initialiser_list_[1];
9792
9793
0
            for (std::size_t i = 0; i < size_; ++i, value += increment.value())
9794
0
            {
9795
0
               *(vector_base_ + i) = value;
9796
0
            }
9797
9798
0
            return *(vector_base_);
9799
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
9800
9801
         inline typename expression_node<T>::node_type type() const exprtk_override
9802
0
         {
9803
0
            return expression_node<T>::e_vecinit;
9804
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
9805
9806
         inline bool valid() const exprtk_override
9807
0
         {
9808
0
            return vector_base_ &&
9809
0
                  (initialiser_list_.size() == 2) &&
9810
0
                  ( details::is_constant_node(initialiser_list_[0])) &&
9811
0
                  (!details::is_constant_node(initialiser_list_[1]));
9812
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
9813
9814
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9815
0
         {
9816
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9817
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>**> >&)
9818
9819
         std::size_t node_depth() const exprtk_override
9820
0
         {
9821
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9822
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
9823
9824
      private:
9825
9826
         vector_init_iota_constnconst_node(const vector_init_iota_constnconst_node<T>&) exprtk_delete;
9827
         vector_init_iota_constnconst_node<T>& operator=(const vector_init_iota_constnconst_node<T>&) exprtk_delete;
9828
9829
         mutable T* vector_base_;
9830
         const std::size_t size_;
9831
         std::vector<expression_ptr> initialiser_list_;
9832
         T base_value_;
9833
      };
9834
9835
      template <typename T>
9836
      class vector_init_iota_nconstconst_node exprtk_final : public expression_node<T>
9837
      {
9838
      public:
9839
9840
         typedef expression_node<T>* expression_ptr;
9841
9842
         vector_init_iota_nconstconst_node(T* vector_base,
9843
                                           const std::size_t& size,
9844
                                           const std::vector<expression_ptr>& initialiser_list)
9845
0
         : vector_base_(vector_base)
9846
0
         , size_(size)
9847
0
         , initialiser_list_(initialiser_list)
9848
0
         {
9849
0
            assert(valid());
9850
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&)
9851
9852
         inline T value() const exprtk_override
9853
0
         {
9854
0
            T value = initialiser_list_[0]->value();
9855
0
            const T increment = initialiser_list_[1]->value();
9856
9857
0
            for (std::size_t i = 0; i < size_; ++i, value += increment)
9858
0
            {
9859
0
               *(vector_base_ + i) = value;
9860
0
            }
9861
9862
0
            return *(vector_base_);
9863
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
9864
9865
         inline typename expression_node<T>::node_type type() const exprtk_override
9866
0
         {
9867
0
            return expression_node<T>::e_vecinit;
9868
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
9869
9870
         inline bool valid() const exprtk_override
9871
0
         {
9872
0
            return vector_base_ &&
9873
0
                   (initialiser_list_.size() == 2) &&
9874
0
                   (!details::is_constant_node(initialiser_list_[0])) &&
9875
0
                   (details::is_constant_node(initialiser_list_[1]));
9876
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
9877
9878
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9879
0
         {
9880
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9881
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>**> >&)
9882
9883
         std::size_t node_depth() const exprtk_override
9884
0
         {
9885
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9886
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
9887
9888
      private:
9889
9890
         vector_init_iota_nconstconst_node(const vector_init_iota_nconstconst_node<T>&) exprtk_delete;
9891
         vector_init_iota_nconstconst_node<T>& operator=(const vector_init_iota_nconstconst_node<T>&) exprtk_delete;
9892
9893
         mutable T* vector_base_;
9894
         const std::size_t size_;
9895
         std::vector<expression_ptr> initialiser_list_;
9896
      };
9897
9898
      template <typename T>
9899
      class vector_init_iota_nconstnconst_node exprtk_final : public expression_node<T>
9900
      {
9901
      public:
9902
9903
         typedef expression_node<T>* expression_ptr;
9904
9905
         vector_init_iota_nconstnconst_node(T* vector_base,
9906
                                            const std::size_t& size,
9907
                                            const std::vector<expression_ptr>& initialiser_list)
9908
0
         : vector_base_(vector_base)
9909
0
         , size_(size)
9910
0
         , initialiser_list_(initialiser_list)
9911
0
         {
9912
0
            assert(valid());
9913
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&)
9914
9915
         inline T value() const exprtk_override
9916
0
         {
9917
0
            T value = initialiser_list_[0]->value();
9918
0
            expression_node<T>& increment = *initialiser_list_[1];
9919
9920
0
            for (std::size_t i = 0; i < size_; ++i, value += increment.value())
9921
0
            {
9922
0
               *(vector_base_ + i) = value;
9923
0
            }
9924
9925
0
            return *(vector_base_);
9926
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
9927
9928
         inline typename expression_node<T>::node_type type() const exprtk_override
9929
0
         {
9930
0
            return expression_node<T>::e_vecinit;
9931
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
9932
9933
         inline bool valid() const exprtk_override
9934
0
         {
9935
0
            return vector_base_ &&
9936
0
                   (initialiser_list_.size() == 2) &&
9937
0
                   (!details::is_constant_node(initialiser_list_[0])) &&
9938
0
                   (!details::is_constant_node(initialiser_list_[1]));
9939
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
9940
9941
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9942
0
         {
9943
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9944
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>**> >&)
9945
9946
         std::size_t node_depth() const exprtk_override
9947
0
         {
9948
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9949
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
9950
9951
      private:
9952
9953
         vector_init_iota_nconstnconst_node(const vector_init_iota_nconstnconst_node<T>&) exprtk_delete;
9954
         vector_init_iota_nconstnconst_node<T>& operator=(const vector_init_iota_nconstnconst_node<T>&) exprtk_delete;
9955
9956
         mutable T* vector_base_;
9957
         const std::size_t size_;
9958
         std::vector<expression_ptr> initialiser_list_;
9959
      };
9960
9961
      template <typename T>
9962
      class swap_node exprtk_final : public expression_node<T>
9963
      {
9964
      public:
9965
9966
         typedef expression_node<T>* expression_ptr;
9967
         typedef variable_node<T>*   variable_node_ptr;
9968
9969
         swap_node(variable_node_ptr var0, variable_node_ptr var1)
9970
2
         : var0_(var0)
9971
2
         , var1_(var1)
9972
2
         {}
exprtk::details::swap_node<double>::swap_node(exprtk::details::variable_node<double>*, exprtk::details::variable_node<double>*)
Line
Count
Source
9970
1
         : var0_(var0)
9971
1
         , var1_(var1)
9972
1
         {}
exprtk::details::swap_node<float>::swap_node(exprtk::details::variable_node<float>*, exprtk::details::variable_node<float>*)
Line
Count
Source
9970
1
         : var0_(var0)
9971
1
         , var1_(var1)
9972
1
         {}
9973
9974
         inline T value() const exprtk_override
9975
2
         {
9976
2
            std::swap(var0_->ref(),var1_->ref());
9977
2
            return var1_->ref();
9978
2
         }
exprtk::details::swap_node<double>::value() const
Line
Count
Source
9975
1
         {
9976
1
            std::swap(var0_->ref(),var1_->ref());
9977
1
            return var1_->ref();
9978
1
         }
exprtk::details::swap_node<float>::value() const
Line
Count
Source
9975
1
         {
9976
1
            std::swap(var0_->ref(),var1_->ref());
9977
1
            return var1_->ref();
9978
1
         }
9979
9980
         inline typename expression_node<T>::node_type type() const exprtk_override
9981
10
         {
9982
10
            return expression_node<T>::e_swap;
9983
10
         }
exprtk::details::swap_node<double>::type() const
Line
Count
Source
9981
5
         {
9982
5
            return expression_node<T>::e_swap;
9983
5
         }
exprtk::details::swap_node<float>::type() const
Line
Count
Source
9981
5
         {
9982
5
            return expression_node<T>::e_swap;
9983
5
         }
9984
9985
      private:
9986
9987
         variable_node_ptr var0_;
9988
         variable_node_ptr var1_;
9989
      };
9990
9991
      template <typename T>
9992
      class swap_generic_node exprtk_final : public binary_node<T>
9993
      {
9994
      public:
9995
9996
         typedef expression_node<T>* expression_ptr;
9997
         typedef ivariable<T>*       ivariable_ptr;
9998
9999
         swap_generic_node(expression_ptr var0, expression_ptr var1)
10000
0
         : binary_node<T>(details::e_swap, var0, var1)
10001
0
         , var0_(dynamic_cast<ivariable_ptr>(var0))
10002
0
         , var1_(dynamic_cast<ivariable_ptr>(var1))
10003
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>*)
10004
10005
         inline T value() const exprtk_override
10006
0
         {
10007
0
            std::swap(var0_->ref(),var1_->ref());
10008
0
            return var1_->ref();
10009
0
         }
Unexecuted instantiation: exprtk::details::swap_generic_node<double>::value() const
Unexecuted instantiation: exprtk::details::swap_generic_node<float>::value() const
10010
10011
         inline typename expression_node<T>::node_type type() const exprtk_override
10012
0
         {
10013
0
            return expression_node<T>::e_swap;
10014
0
         }
Unexecuted instantiation: exprtk::details::swap_generic_node<double>::type() const
Unexecuted instantiation: exprtk::details::swap_generic_node<float>::type() const
10015
10016
      private:
10017
10018
         ivariable_ptr var0_;
10019
         ivariable_ptr var1_;
10020
      };
10021
10022
      template <typename T>
10023
      class swap_vecvec_node exprtk_final
10024
                             : public binary_node     <T>
10025
                             , public vector_interface<T>
10026
      {
10027
      public:
10028
10029
         typedef expression_node<T>* expression_ptr;
10030
         typedef vector_node    <T>* vector_node_ptr;
10031
         typedef vec_data_store <T>  vds_t;
10032
10033
         using binary_node<T>::branch;
10034
10035
         swap_vecvec_node(expression_ptr branch0,
10036
                          expression_ptr branch1)
10037
0
         : binary_node<T>(details::e_swap, branch0, branch1)
10038
0
         , vec0_node_ptr_(0)
10039
0
         , vec1_node_ptr_(0)
10040
0
         , initialised_  (false)
10041
0
         {
10042
0
            if (is_ivector_node(branch(0)))
10043
0
            {
10044
0
               vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0);
10045
10046
0
               if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(0))))
10047
0
               {
10048
0
                  vec0_node_ptr_ = vi->vec();
10049
0
                  vds()          = vi->vds();
10050
0
               }
10051
0
            }
10052
10053
0
            if (is_ivector_node(branch(1)))
10054
0
            {
10055
0
               vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0);
10056
10057
0
               if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1))))
10058
0
               {
10059
0
                  vec1_node_ptr_ = vi->vec();
10060
0
               }
10061
0
            }
10062
10063
0
            if (vec0_node_ptr_ && vec1_node_ptr_)
10064
0
            {
10065
0
               initialised_ = size() <= base_size();
10066
0
            }
10067
10068
0
            assert(valid());
10069
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>*)
10070
10071
         inline T value() const exprtk_override
10072
0
         {
10073
0
            binary_node<T>::branch(0)->value();
10074
0
            binary_node<T>::branch(1)->value();
10075
10076
0
            T* vec0 = vec0_node_ptr_->vds().data();
10077
0
            T* vec1 = vec1_node_ptr_->vds().data();
10078
10079
0
            assert(size() <= base_size());
10080
0
            const std::size_t n = size();
10081
10082
0
            for (std::size_t i = 0; i < n; ++i)
10083
0
            {
10084
0
               std::swap(vec0[i],vec1[i]);
10085
0
            }
10086
10087
0
            return vec1_node_ptr_->value();
10088
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::value() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::value() const
10089
10090
         vector_node_ptr vec() const exprtk_override
10091
0
         {
10092
0
            return vec0_node_ptr_;
10093
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vec() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vec() const
10094
10095
         vector_node_ptr vec() exprtk_override
10096
0
         {
10097
0
            return vec0_node_ptr_;
10098
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vec()
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vec()
10099
10100
         inline typename expression_node<T>::node_type type() const exprtk_override
10101
0
         {
10102
0
            return expression_node<T>::e_vecvecswap;
10103
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::type() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::type() const
10104
10105
         inline bool valid() const exprtk_override
10106
0
         {
10107
0
            return initialised_ && binary_node<T>::valid();
10108
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::valid() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::valid() const
10109
10110
         std::size_t size() const exprtk_override
10111
0
         {
10112
0
            return std::min(
10113
0
               vec0_node_ptr_->vec_holder().size(),
10114
0
               vec1_node_ptr_->vec_holder().size());
10115
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::size() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::size() const
10116
10117
         std::size_t base_size() const exprtk_override
10118
0
         {
10119
0
            return std::min(
10120
0
               vec0_node_ptr_->vec_holder().base_size(),
10121
0
               vec1_node_ptr_->vec_holder().base_size());
10122
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::base_size() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::base_size() const
10123
10124
         vds_t& vds() exprtk_override
10125
0
         {
10126
0
            return vds_;
10127
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vds()
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vds()
10128
10129
         const vds_t& vds() const exprtk_override
10130
0
         {
10131
0
            return vds_;
10132
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vds() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vds() const
10133
10134
      private:
10135
10136
         vector_node<T>* vec0_node_ptr_;
10137
         vector_node<T>* vec1_node_ptr_;
10138
         bool            initialised_;
10139
         vds_t           vds_;
10140
      };
10141
10142
      #ifndef exprtk_disable_string_capabilities
10143
      template <typename T>
10144
      class stringvar_node exprtk_final
10145
                           : public expression_node <T>
10146
                           , public string_base_node<T>
10147
                           , public range_interface <T>
10148
      {
10149
      public:
10150
10151
         typedef typename range_interface<T>::range_t range_t;
10152
10153
         static std::string null_value;
10154
10155
         explicit stringvar_node()
10156
         : value_(&null_value)
10157
         {}
10158
10159
         explicit stringvar_node(std::string& v)
10160
0
         : value_(&v)
10161
0
         {
10162
0
            rp_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10163
0
            rp_.n1_c = std::make_pair<bool,std::size_t>(true,v.size());
10164
0
            rp_.cache.first  = rp_.n0_c.second;
10165
0
            rp_.cache.second = rp_.n1_c.second;
10166
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> >&)
10167
10168
         inline bool operator <(const stringvar_node<T>& v) const
10169
         {
10170
            return this < (&v);
10171
         }
10172
10173
         inline T value() const exprtk_override
10174
0
         {
10175
0
            rp_.n1_c.second  = (*value_).size();
10176
0
            rp_.cache.second = rp_.n1_c.second;
10177
10178
0
            return std::numeric_limits<T>::quiet_NaN();
10179
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::value() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::value() const
10180
10181
         std::string str() const exprtk_override
10182
0
         {
10183
0
            return ref();
10184
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::str() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::str() const
10185
10186
         char_cptr base() const exprtk_override
10187
0
         {
10188
0
            return &(*value_)[0];
10189
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::base() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::base() const
10190
10191
         std::size_t size() const exprtk_override
10192
0
         {
10193
0
            return ref().size();
10194
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::size() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::size() const
10195
10196
         std::string& ref()
10197
0
         {
10198
0
            return (*value_);
10199
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::ref()
Unexecuted instantiation: exprtk::details::stringvar_node<float>::ref()
10200
10201
         const std::string& ref() const
10202
0
         {
10203
0
            return (*value_);
10204
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::ref() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::ref() const
10205
10206
         range_t& range_ref() exprtk_override
10207
0
         {
10208
0
            return rp_;
10209
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::stringvar_node<float>::range_ref()
10210
10211
         const range_t& range_ref() const exprtk_override
10212
0
         {
10213
0
            return rp_;
10214
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::range_ref() const
10215
10216
         inline typename expression_node<T>::node_type type() const exprtk_override
10217
0
         {
10218
0
            return expression_node<T>::e_stringvar;
10219
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::type() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::type() const
10220
10221
         void rebase(std::string& s)
10222
         {
10223
            value_ = &s;
10224
            rp_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10225
            rp_.n1_c = std::make_pair<bool,std::size_t>(true,value_->size() - 1);
10226
            rp_.cache.first  = rp_.n0_c.second;
10227
            rp_.cache.second = rp_.n1_c.second;
10228
         }
10229
10230
      private:
10231
10232
         std::string* value_;
10233
         mutable range_t rp_;
10234
      };
10235
10236
      template <typename T>
10237
      std::string stringvar_node<T>::null_value = std::string("");
10238
10239
      template <typename T>
10240
      class string_range_node exprtk_final
10241
                              : public expression_node <T>
10242
                              , public string_base_node<T>
10243
                              , public range_interface <T>
10244
      {
10245
      public:
10246
10247
         typedef typename range_interface<T>::range_t range_t;
10248
10249
         static std::string null_value;
10250
10251
         explicit string_range_node(std::string& v, const range_t& rp)
10252
0
         : value_(&v)
10253
0
         , rp_(rp)
10254
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&)
10255
10256
         virtual ~string_range_node()
10257
0
         {
10258
0
            rp_.free();
10259
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::~string_range_node()
Unexecuted instantiation: exprtk::details::string_range_node<float>::~string_range_node()
10260
10261
         inline bool operator <(const string_range_node<T>& v) const
10262
         {
10263
            return this < (&v);
10264
         }
10265
10266
         inline T value() const exprtk_override
10267
0
         {
10268
0
            return std::numeric_limits<T>::quiet_NaN();
10269
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::value() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::value() const
10270
10271
         inline std::string str() const exprtk_override
10272
0
         {
10273
0
            return (*value_);
10274
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::str() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::str() const
10275
10276
         char_cptr base() const exprtk_override
10277
0
         {
10278
0
            return &(*value_)[0];
10279
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::base() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::base() const
10280
10281
         std::size_t size() const exprtk_override
10282
0
         {
10283
0
            return ref().size();
10284
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::size() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::size() const
10285
10286
         inline range_t range() const
10287
0
         {
10288
0
            return rp_;
10289
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::range() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::range() const
10290
10291
         inline virtual std::string& ref()
10292
0
         {
10293
0
            return (*value_);
10294
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::ref()
Unexecuted instantiation: exprtk::details::string_range_node<float>::ref()
10295
10296
         inline virtual const std::string& ref() const
10297
0
         {
10298
0
            return (*value_);
10299
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::ref() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::ref() const
10300
10301
         inline range_t& range_ref() exprtk_override
10302
0
         {
10303
0
            return rp_;
10304
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::string_range_node<float>::range_ref()
10305
10306
         inline const range_t& range_ref() const exprtk_override
10307
0
         {
10308
0
            return rp_;
10309
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::range_ref() const
10310
10311
         inline typename expression_node<T>::node_type type() const exprtk_override
10312
0
         {
10313
0
            return expression_node<T>::e_stringvarrng;
10314
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::type() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::type() const
10315
10316
      private:
10317
10318
         std::string* value_;
10319
         range_t      rp_;
10320
      };
10321
10322
      template <typename T>
10323
      std::string string_range_node<T>::null_value = std::string("");
10324
10325
      template <typename T>
10326
      class const_string_range_node exprtk_final
10327
                                    : public expression_node <T>
10328
                                    , public string_base_node<T>
10329
                                    , public range_interface <T>
10330
      {
10331
      public:
10332
10333
         typedef typename range_interface<T>::range_t range_t;
10334
10335
         explicit const_string_range_node(const std::string& v, const range_t& rp)
10336
60
         : value_(v)
10337
60
         , rp_(rp)
10338
60
         {}
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
10336
30
         : value_(v)
10337
30
         , rp_(rp)
10338
30
         {}
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
10336
30
         : value_(v)
10337
30
         , rp_(rp)
10338
30
         {}
10339
10340
        ~const_string_range_node()
10341
60
         {
10342
60
            rp_.free();
10343
60
         }
exprtk::details::const_string_range_node<double>::~const_string_range_node()
Line
Count
Source
10341
30
         {
10342
30
            rp_.free();
10343
30
         }
exprtk::details::const_string_range_node<float>::~const_string_range_node()
Line
Count
Source
10341
30
         {
10342
30
            rp_.free();
10343
30
         }
10344
10345
         inline T value() const exprtk_override
10346
14
         {
10347
14
            return std::numeric_limits<T>::quiet_NaN();
10348
14
         }
exprtk::details::const_string_range_node<double>::value() const
Line
Count
Source
10346
7
         {
10347
7
            return std::numeric_limits<T>::quiet_NaN();
10348
7
         }
exprtk::details::const_string_range_node<float>::value() const
Line
Count
Source
10346
7
         {
10347
7
            return std::numeric_limits<T>::quiet_NaN();
10348
7
         }
10349
10350
         std::string str() const exprtk_override
10351
32
         {
10352
32
            return value_;
10353
32
         }
exprtk::details::const_string_range_node<double>::str() const
Line
Count
Source
10351
16
         {
10352
16
            return value_;
10353
16
         }
exprtk::details::const_string_range_node<float>::str() const
Line
Count
Source
10351
16
         {
10352
16
            return value_;
10353
16
         }
10354
10355
         char_cptr base() const exprtk_override
10356
10
         {
10357
10
            return value_.data();
10358
10
         }
exprtk::details::const_string_range_node<double>::base() const
Line
Count
Source
10356
5
         {
10357
5
            return value_.data();
10358
5
         }
exprtk::details::const_string_range_node<float>::base() const
Line
Count
Source
10356
5
         {
10357
5
            return value_.data();
10358
5
         }
10359
10360
         std::size_t size() const exprtk_override
10361
12
         {
10362
12
            return value_.size();
10363
12
         }
exprtk::details::const_string_range_node<double>::size() const
Line
Count
Source
10361
6
         {
10362
6
            return value_.size();
10363
6
         }
exprtk::details::const_string_range_node<float>::size() const
Line
Count
Source
10361
6
         {
10362
6
            return value_.size();
10363
6
         }
10364
10365
         range_t range() const
10366
32
         {
10367
32
            return rp_;
10368
32
         }
exprtk::details::const_string_range_node<double>::range() const
Line
Count
Source
10366
16
         {
10367
16
            return rp_;
10368
16
         }
exprtk::details::const_string_range_node<float>::range() const
Line
Count
Source
10366
16
         {
10367
16
            return rp_;
10368
16
         }
10369
10370
         range_t& range_ref() exprtk_override
10371
44
         {
10372
44
            return rp_;
10373
44
         }
exprtk::details::const_string_range_node<double>::range_ref()
Line
Count
Source
10371
22
         {
10372
22
            return rp_;
10373
22
         }
exprtk::details::const_string_range_node<float>::range_ref()
Line
Count
Source
10371
22
         {
10372
22
            return rp_;
10373
22
         }
10374
10375
         const range_t& range_ref() const exprtk_override
10376
0
         {
10377
0
            return rp_;
10378
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
10379
10380
         inline typename expression_node<T>::node_type type() const exprtk_override
10381
994
         {
10382
994
            return expression_node<T>::e_cstringvarrng;
10383
994
         }
exprtk::details::const_string_range_node<double>::type() const
Line
Count
Source
10381
497
         {
10382
497
            return expression_node<T>::e_cstringvarrng;
10383
497
         }
exprtk::details::const_string_range_node<float>::type() const
Line
Count
Source
10381
497
         {
10382
497
            return expression_node<T>::e_cstringvarrng;
10383
497
         }
10384
10385
      private:
10386
10387
         const_string_range_node(const const_string_range_node<T>&) exprtk_delete;
10388
         const_string_range_node<T>& operator=(const const_string_range_node<T>&) exprtk_delete;
10389
10390
         const std::string value_;
10391
         range_t rp_;
10392
      };
10393
10394
      template <typename T>
10395
      class generic_string_range_node exprtk_final
10396
                                      : public expression_node <T>
10397
                                      , public string_base_node<T>
10398
                                      , public range_interface <T>
10399
      {
10400
      public:
10401
10402
         typedef expression_node <T>* expression_ptr;
10403
         typedef stringvar_node  <T>* strvar_node_ptr;
10404
         typedef string_base_node<T>* str_base_ptr;
10405
         typedef typename range_interface<T>::range_t range_t;
10406
         typedef range_t*             range_ptr;
10407
         typedef range_interface<T>   irange_t;
10408
         typedef irange_t*            irange_ptr;
10409
         typedef std::pair<expression_ptr,bool>  branch_t;
10410
10411
         generic_string_range_node(expression_ptr str_branch, const range_t& brange)
10412
12
         : initialised_(false)
10413
12
         , str_base_ptr_ (0)
10414
12
         , str_range_ptr_(0)
10415
12
         , base_range_(brange)
10416
12
         {
10417
12
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10418
12
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10419
12
            range_.cache.first  = range_.n0_c.second;
10420
12
            range_.cache.second = range_.n1_c.second;
10421
10422
12
            construct_branch_pair(branch_, str_branch);
10423
10424
12
            if (is_generally_string_node(branch_.first))
10425
12
            {
10426
12
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);
10427
10428
12
               if (0 == str_base_ptr_)
10429
0
                  return;
10430
10431
12
               str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first);
10432
10433
12
               if (0 == str_range_ptr_)
10434
0
                  return;
10435
12
            }
10436
10437
12
            initialised_ = (str_base_ptr_ && str_range_ptr_);
10438
12
            assert(valid());
10439
12
         }
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
10412
6
         : initialised_(false)
10413
6
         , str_base_ptr_ (0)
10414
6
         , str_range_ptr_(0)
10415
6
         , base_range_(brange)
10416
6
         {
10417
6
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10418
6
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10419
6
            range_.cache.first  = range_.n0_c.second;
10420
6
            range_.cache.second = range_.n1_c.second;
10421
10422
6
            construct_branch_pair(branch_, str_branch);
10423
10424
6
            if (is_generally_string_node(branch_.first))
10425
6
            {
10426
6
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);
10427
10428
6
               if (0 == str_base_ptr_)
10429
0
                  return;
10430
10431
6
               str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first);
10432
10433
6
               if (0 == str_range_ptr_)
10434
0
                  return;
10435
6
            }
10436
10437
6
            initialised_ = (str_base_ptr_ && str_range_ptr_);
10438
6
            assert(valid());
10439
6
         }
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
10412
6
         : initialised_(false)
10413
6
         , str_base_ptr_ (0)
10414
6
         , str_range_ptr_(0)
10415
6
         , base_range_(brange)
10416
6
         {
10417
6
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10418
6
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10419
6
            range_.cache.first  = range_.n0_c.second;
10420
6
            range_.cache.second = range_.n1_c.second;
10421
10422
6
            construct_branch_pair(branch_, str_branch);
10423
10424
6
            if (is_generally_string_node(branch_.first))
10425
6
            {
10426
6
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);
10427
10428
6
               if (0 == str_base_ptr_)
10429
0
                  return;
10430
10431
6
               str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first);
10432
10433
6
               if (0 == str_range_ptr_)
10434
0
                  return;
10435
6
            }
10436
10437
6
            initialised_ = (str_base_ptr_ && str_range_ptr_);
10438
6
            assert(valid());
10439
6
         }
10440
10441
        ~generic_string_range_node()
10442
12
         {
10443
12
            base_range_.free();
10444
12
         }
exprtk::details::generic_string_range_node<double>::~generic_string_range_node()
Line
Count
Source
10442
6
         {
10443
6
            base_range_.free();
10444
6
         }
exprtk::details::generic_string_range_node<float>::~generic_string_range_node()
Line
Count
Source
10442
6
         {
10443
6
            base_range_.free();
10444
6
         }
10445
10446
         inline T value() const exprtk_override
10447
2
         {
10448
2
            branch_.first->value();
10449
10450
2
            std::size_t str_r0 = 0;
10451
2
            std::size_t str_r1 = 0;
10452
10453
2
            std::size_t r0 = 0;
10454
2
            std::size_t r1 = 0;
10455
10456
2
            const range_t& range = str_range_ptr_->range_ref();
10457
10458
2
            const std::size_t base_str_size = str_base_ptr_->size();
10459
10460
2
            if (
10461
2
                  range      (str_r0, str_r1, base_str_size         ) &&
10462
2
                  base_range_(r0    , r1    , base_str_size - str_r0)
10463
2
               )
10464
2
            {
10465
2
               const std::size_t size = r1 - r0;
10466
10467
2
               range_.n1_c.second  = size;
10468
2
               range_.cache.second = range_.n1_c.second;
10469
10470
2
               value_.assign(str_base_ptr_->base() + str_r0 + r0, size);
10471
2
            }
10472
10473
2
            return std::numeric_limits<T>::quiet_NaN();
10474
2
         }
exprtk::details::generic_string_range_node<double>::value() const
Line
Count
Source
10447
1
         {
10448
1
            branch_.first->value();
10449
10450
1
            std::size_t str_r0 = 0;
10451
1
            std::size_t str_r1 = 0;
10452
10453
1
            std::size_t r0 = 0;
10454
1
            std::size_t r1 = 0;
10455
10456
1
            const range_t& range = str_range_ptr_->range_ref();
10457
10458
1
            const std::size_t base_str_size = str_base_ptr_->size();
10459
10460
1
            if (
10461
1
                  range      (str_r0, str_r1, base_str_size         ) &&
10462
1
                  base_range_(r0    , r1    , base_str_size - str_r0)
10463
1
               )
10464
1
            {
10465
1
               const std::size_t size = r1 - r0;
10466
10467
1
               range_.n1_c.second  = size;
10468
1
               range_.cache.second = range_.n1_c.second;
10469
10470
1
               value_.assign(str_base_ptr_->base() + str_r0 + r0, size);
10471
1
            }
10472
10473
1
            return std::numeric_limits<T>::quiet_NaN();
10474
1
         }
exprtk::details::generic_string_range_node<float>::value() const
Line
Count
Source
10447
1
         {
10448
1
            branch_.first->value();
10449
10450
1
            std::size_t str_r0 = 0;
10451
1
            std::size_t str_r1 = 0;
10452
10453
1
            std::size_t r0 = 0;
10454
1
            std::size_t r1 = 0;
10455
10456
1
            const range_t& range = str_range_ptr_->range_ref();
10457
10458
1
            const std::size_t base_str_size = str_base_ptr_->size();
10459
10460
1
            if (
10461
1
                  range      (str_r0, str_r1, base_str_size         ) &&
10462
1
                  base_range_(r0    , r1    , base_str_size - str_r0)
10463
1
               )
10464
1
            {
10465
1
               const std::size_t size = r1 - r0;
10466
10467
1
               range_.n1_c.second  = size;
10468
1
               range_.cache.second = range_.n1_c.second;
10469
10470
1
               value_.assign(str_base_ptr_->base() + str_r0 + r0, size);
10471
1
            }
10472
10473
1
            return std::numeric_limits<T>::quiet_NaN();
10474
1
         }
10475
10476
         std::string str() const exprtk_override
10477
0
         {
10478
0
            return value_;
10479
0
         }
Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::str() const
Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::str() const
10480
10481
         char_cptr base() const exprtk_override
10482
0
         {
10483
0
            return &value_[0];
10484
0
         }
Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::base() const
Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::base() const
10485
10486
         std::size_t size() const exprtk_override
10487
0
         {
10488
0
            return value_.size();
10489
0
         }
Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::size() const
Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::size() const
10490
10491
         range_t& range_ref() exprtk_override
10492
6
         {
10493
6
            return range_;
10494
6
         }
exprtk::details::generic_string_range_node<double>::range_ref()
Line
Count
Source
10492
3
         {
10493
3
            return range_;
10494
3
         }
exprtk::details::generic_string_range_node<float>::range_ref()
Line
Count
Source
10492
3
         {
10493
3
            return range_;
10494
3
         }
10495
10496
         const range_t& range_ref() const exprtk_override
10497
0
         {
10498
0
            return range_;
10499
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
10500
10501
         inline typename expression_node<T>::node_type type() const exprtk_override
10502
132
         {
10503
132
            return expression_node<T>::e_strgenrange;
10504
132
         }
exprtk::details::generic_string_range_node<double>::type() const
Line
Count
Source
10502
66
         {
10503
66
            return expression_node<T>::e_strgenrange;
10504
66
         }
exprtk::details::generic_string_range_node<float>::type() const
Line
Count
Source
10502
66
         {
10503
66
            return expression_node<T>::e_strgenrange;
10504
66
         }
10505
10506
         inline bool valid() const exprtk_override
10507
30
         {
10508
30
            return initialised_ && branch_.first;
10509
30
         }
exprtk::details::generic_string_range_node<double>::valid() const
Line
Count
Source
10507
15
         {
10508
15
            return initialised_ && branch_.first;
10509
15
         }
exprtk::details::generic_string_range_node<float>::valid() const
Line
Count
Source
10507
15
         {
10508
15
            return initialised_ && branch_.first;
10509
15
         }
10510
10511
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
10512
12
         {
10513
12
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
10514
12
         }
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
10512
6
         {
10513
6
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
10514
6
         }
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
10512
6
         {
10513
6
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
10514
6
         }
10515
10516
         std::size_t node_depth() const exprtk_override
10517
20
         {
10518
20
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
10519
20
         }
exprtk::details::generic_string_range_node<double>::node_depth() const
Line
Count
Source
10517
10
         {
10518
10
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
10519
10
         }
exprtk::details::generic_string_range_node<float>::node_depth() const
Line
Count
Source
10517
10
         {
10518
10
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
10519
10
         }
10520
10521
      private:
10522
10523
         bool                initialised_;
10524
         branch_t            branch_;
10525
         str_base_ptr        str_base_ptr_;
10526
         irange_ptr          str_range_ptr_;
10527
         mutable range_t     base_range_;
10528
         mutable range_t     range_;
10529
         mutable std::string value_;
10530
      };
10531
10532
      template <typename T>
10533
      class string_concat_node exprtk_final
10534
                               : public binary_node     <T>
10535
                               , public string_base_node<T>
10536
                               , public range_interface <T>
10537
      {
10538
      public:
10539
10540
         typedef typename range_interface<T>::range_t range_t;
10541
         typedef range_interface<T>   irange_t;
10542
         typedef irange_t*            irange_ptr;
10543
         typedef range_t*             range_ptr;
10544
         typedef expression_node <T>* expression_ptr;
10545
         typedef string_base_node<T>* str_base_ptr;
10546
10547
         using binary_node<T>::branch;
10548
10549
         string_concat_node(const operator_type& opr,
10550
                            expression_ptr branch0,
10551
                            expression_ptr branch1)
10552
8
         : binary_node<T>(opr, branch0, branch1)
10553
8
         , initialised_(false)
10554
8
         , str0_base_ptr_ (0)
10555
8
         , str1_base_ptr_ (0)
10556
8
         , str0_range_ptr_(0)
10557
8
         , str1_range_ptr_(0)
10558
8
         {
10559
8
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10560
8
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10561
10562
8
            range_.cache.first  = range_.n0_c.second;
10563
8
            range_.cache.second = range_.n1_c.second;
10564
10565
8
            if (is_generally_string_node(branch(0)))
10566
8
            {
10567
8
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10568
10569
8
               if (0 == str0_base_ptr_)
10570
0
                  return;
10571
10572
8
               str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0));
10573
10574
8
               if (0 == str0_range_ptr_)
10575
0
                  return;
10576
8
            }
10577
10578
8
            if (is_generally_string_node(branch(1)))
10579
8
            {
10580
8
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10581
10582
8
               if (0 == str1_base_ptr_)
10583
0
                  return;
10584
10585
8
               str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1));
10586
10587
8
               if (0 == str1_range_ptr_)
10588
0
                  return;
10589
8
            }
10590
10591
8
            initialised_ = str0_base_ptr_  &&
10592
8
                           str1_base_ptr_  &&
10593
8
                           str0_range_ptr_ &&
10594
8
                           str1_range_ptr_ ;
10595
10596
8
            assert(valid());
10597
8
         }
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
10552
4
         : binary_node<T>(opr, branch0, branch1)
10553
4
         , initialised_(false)
10554
4
         , str0_base_ptr_ (0)
10555
4
         , str1_base_ptr_ (0)
10556
4
         , str0_range_ptr_(0)
10557
4
         , str1_range_ptr_(0)
10558
4
         {
10559
4
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10560
4
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10561
10562
4
            range_.cache.first  = range_.n0_c.second;
10563
4
            range_.cache.second = range_.n1_c.second;
10564
10565
4
            if (is_generally_string_node(branch(0)))
10566
4
            {
10567
4
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10568
10569
4
               if (0 == str0_base_ptr_)
10570
0
                  return;
10571
10572
4
               str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0));
10573
10574
4
               if (0 == str0_range_ptr_)
10575
0
                  return;
10576
4
            }
10577
10578
4
            if (is_generally_string_node(branch(1)))
10579
4
            {
10580
4
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10581
10582
4
               if (0 == str1_base_ptr_)
10583
0
                  return;
10584
10585
4
               str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1));
10586
10587
4
               if (0 == str1_range_ptr_)
10588
0
                  return;
10589
4
            }
10590
10591
4
            initialised_ = str0_base_ptr_  &&
10592
4
                           str1_base_ptr_  &&
10593
4
                           str0_range_ptr_ &&
10594
4
                           str1_range_ptr_ ;
10595
10596
4
            assert(valid());
10597
4
         }
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
10552
4
         : binary_node<T>(opr, branch0, branch1)
10553
4
         , initialised_(false)
10554
4
         , str0_base_ptr_ (0)
10555
4
         , str1_base_ptr_ (0)
10556
4
         , str0_range_ptr_(0)
10557
4
         , str1_range_ptr_(0)
10558
4
         {
10559
4
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10560
4
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10561
10562
4
            range_.cache.first  = range_.n0_c.second;
10563
4
            range_.cache.second = range_.n1_c.second;
10564
10565
4
            if (is_generally_string_node(branch(0)))
10566
4
            {
10567
4
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10568
10569
4
               if (0 == str0_base_ptr_)
10570
0
                  return;
10571
10572
4
               str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0));
10573
10574
4
               if (0 == str0_range_ptr_)
10575
0
                  return;
10576
4
            }
10577
10578
4
            if (is_generally_string_node(branch(1)))
10579
4
            {
10580
4
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10581
10582
4
               if (0 == str1_base_ptr_)
10583
0
                  return;
10584
10585
4
               str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1));
10586
10587
4
               if (0 == str1_range_ptr_)
10588
0
                  return;
10589
4
            }
10590
10591
4
            initialised_ = str0_base_ptr_  &&
10592
4
                           str1_base_ptr_  &&
10593
4
                           str0_range_ptr_ &&
10594
4
                           str1_range_ptr_ ;
10595
10596
4
            assert(valid());
10597
4
         }
10598
10599
         inline T value() const exprtk_override
10600
8
         {
10601
8
            branch(0)->value();
10602
8
            branch(1)->value();
10603
10604
8
            std::size_t str0_r0 = 0;
10605
8
            std::size_t str0_r1 = 0;
10606
10607
8
            std::size_t str1_r0 = 0;
10608
8
            std::size_t str1_r1 = 0;
10609
10610
8
            const range_t& range0 = str0_range_ptr_->range_ref();
10611
8
            const range_t& range1 = str1_range_ptr_->range_ref();
10612
10613
8
            if (
10614
8
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10615
8
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10616
8
               )
10617
6
            {
10618
6
               const std::size_t size0 = (str0_r1 - str0_r0);
10619
6
               const std::size_t size1 = (str1_r1 - str1_r0);
10620
10621
6
               value_.assign(str0_base_ptr_->base() + str0_r0, size0);
10622
6
               value_.append(str1_base_ptr_->base() + str1_r0, size1);
10623
10624
6
               range_.n1_c.second  = value_.size();
10625
6
               range_.cache.second = range_.n1_c.second;
10626
6
            }
10627
10628
8
            return std::numeric_limits<T>::quiet_NaN();
10629
8
         }
exprtk::details::string_concat_node<double>::value() const
Line
Count
Source
10600
4
         {
10601
4
            branch(0)->value();
10602
4
            branch(1)->value();
10603
10604
4
            std::size_t str0_r0 = 0;
10605
4
            std::size_t str0_r1 = 0;
10606
10607
4
            std::size_t str1_r0 = 0;
10608
4
            std::size_t str1_r1 = 0;
10609
10610
4
            const range_t& range0 = str0_range_ptr_->range_ref();
10611
4
            const range_t& range1 = str1_range_ptr_->range_ref();
10612
10613
4
            if (
10614
4
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10615
4
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10616
4
               )
10617
3
            {
10618
3
               const std::size_t size0 = (str0_r1 - str0_r0);
10619
3
               const std::size_t size1 = (str1_r1 - str1_r0);
10620
10621
3
               value_.assign(str0_base_ptr_->base() + str0_r0, size0);
10622
3
               value_.append(str1_base_ptr_->base() + str1_r0, size1);
10623
10624
3
               range_.n1_c.second  = value_.size();
10625
3
               range_.cache.second = range_.n1_c.second;
10626
3
            }
10627
10628
4
            return std::numeric_limits<T>::quiet_NaN();
10629
4
         }
exprtk::details::string_concat_node<float>::value() const
Line
Count
Source
10600
4
         {
10601
4
            branch(0)->value();
10602
4
            branch(1)->value();
10603
10604
4
            std::size_t str0_r0 = 0;
10605
4
            std::size_t str0_r1 = 0;
10606
10607
4
            std::size_t str1_r0 = 0;
10608
4
            std::size_t str1_r1 = 0;
10609
10610
4
            const range_t& range0 = str0_range_ptr_->range_ref();
10611
4
            const range_t& range1 = str1_range_ptr_->range_ref();
10612
10613
4
            if (
10614
4
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10615
4
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10616
4
               )
10617
3
            {
10618
3
               const std::size_t size0 = (str0_r1 - str0_r0);
10619
3
               const std::size_t size1 = (str1_r1 - str1_r0);
10620
10621
3
               value_.assign(str0_base_ptr_->base() + str0_r0, size0);
10622
3
               value_.append(str1_base_ptr_->base() + str1_r0, size1);
10623
10624
3
               range_.n1_c.second  = value_.size();
10625
3
               range_.cache.second = range_.n1_c.second;
10626
3
            }
10627
10628
4
            return std::numeric_limits<T>::quiet_NaN();
10629
4
         }
10630
10631
         std::string str() const exprtk_override
10632
0
         {
10633
0
            return value_;
10634
0
         }
Unexecuted instantiation: exprtk::details::string_concat_node<double>::str() const
Unexecuted instantiation: exprtk::details::string_concat_node<float>::str() const
10635
10636
         char_cptr base() const exprtk_override
10637
2
         {
10638
2
            return &value_[0];
10639
2
         }
exprtk::details::string_concat_node<double>::base() const
Line
Count
Source
10637
1
         {
10638
1
            return &value_[0];
10639
1
         }
exprtk::details::string_concat_node<float>::base() const
Line
Count
Source
10637
1
         {
10638
1
            return &value_[0];
10639
1
         }
10640
10641
         std::size_t size() const exprtk_override
10642
2
         {
10643
2
            return value_.size();
10644
2
         }
exprtk::details::string_concat_node<double>::size() const
Line
Count
Source
10642
1
         {
10643
1
            return value_.size();
10644
1
         }
exprtk::details::string_concat_node<float>::size() const
Line
Count
Source
10642
1
         {
10643
1
            return value_.size();
10644
1
         }
10645
10646
         range_t& range_ref() exprtk_override
10647
2
         {
10648
2
            return range_;
10649
2
         }
exprtk::details::string_concat_node<double>::range_ref()
Line
Count
Source
10647
1
         {
10648
1
            return range_;
10649
1
         }
exprtk::details::string_concat_node<float>::range_ref()
Line
Count
Source
10647
1
         {
10648
1
            return range_;
10649
1
         }
10650
10651
         const range_t& range_ref() const exprtk_override
10652
0
         {
10653
0
            return range_;
10654
0
         }
Unexecuted instantiation: exprtk::details::string_concat_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::string_concat_node<float>::range_ref() const
10655
10656
         inline typename expression_node<T>::node_type type() const exprtk_override
10657
70
         {
10658
70
            return expression_node<T>::e_strconcat;
10659
70
         }
exprtk::details::string_concat_node<double>::type() const
Line
Count
Source
10657
35
         {
10658
35
            return expression_node<T>::e_strconcat;
10659
35
         }
exprtk::details::string_concat_node<float>::type() const
Line
Count
Source
10657
35
         {
10658
35
            return expression_node<T>::e_strconcat;
10659
35
         }
10660
10661
         inline bool valid() const exprtk_override
10662
22
         {
10663
22
            return initialised_ && binary_node<T>::valid();
10664
22
         }
exprtk::details::string_concat_node<double>::valid() const
Line
Count
Source
10662
11
         {
10663
11
            return initialised_ && binary_node<T>::valid();
10664
11
         }
exprtk::details::string_concat_node<float>::valid() const
Line
Count
Source
10662
11
         {
10663
11
            return initialised_ && binary_node<T>::valid();
10664
11
         }
10665
10666
      private:
10667
10668
         bool                initialised_;
10669
         str_base_ptr        str0_base_ptr_;
10670
         str_base_ptr        str1_base_ptr_;
10671
         irange_ptr          str0_range_ptr_;
10672
         irange_ptr          str1_range_ptr_;
10673
         mutable range_t     range_;
10674
         mutable std::string value_;
10675
      };
10676
10677
      template <typename T>
10678
      class swap_string_node exprtk_final
10679
                             : public binary_node     <T>
10680
                             , public string_base_node<T>
10681
                             , public range_interface <T>
10682
      {
10683
      public:
10684
10685
         typedef typename range_interface<T>::range_t range_t;
10686
         typedef range_t*             range_ptr;
10687
         typedef range_interface<T>   irange_t;
10688
         typedef irange_t*            irange_ptr;
10689
         typedef expression_node <T>* expression_ptr;
10690
         typedef stringvar_node  <T>* strvar_node_ptr;
10691
         typedef string_base_node<T>* str_base_ptr;
10692
10693
         using binary_node<T>::branch;
10694
10695
         swap_string_node(expression_ptr branch0, expression_ptr branch1)
10696
0
         : binary_node<T>(details::e_swap, branch0, branch1)
10697
0
         , initialised_(false)
10698
0
         , str0_node_ptr_(0)
10699
0
         , str1_node_ptr_(0)
10700
0
         {
10701
0
            if (is_string_node(branch(0)))
10702
0
            {
10703
0
               str0_node_ptr_ = static_cast<strvar_node_ptr>(branch(0));
10704
0
            }
10705
10706
0
            if (is_string_node(branch(1)))
10707
0
            {
10708
0
               str1_node_ptr_ = static_cast<strvar_node_ptr>(branch(1));
10709
0
            }
10710
10711
0
            initialised_ = (str0_node_ptr_ && str1_node_ptr_);
10712
0
            assert(valid());
10713
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>*)
10714
10715
         inline T value() const exprtk_override
10716
0
         {
10717
0
            branch(0)->value();
10718
0
            branch(1)->value();
10719
10720
0
            std::swap(str0_node_ptr_->ref(), str1_node_ptr_->ref());
10721
10722
0
            return std::numeric_limits<T>::quiet_NaN();
10723
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::value() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::value() const
10724
10725
         std::string str() const exprtk_override
10726
0
         {
10727
0
            return str0_node_ptr_->str();
10728
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::str() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::str() const
10729
10730
         char_cptr base() const exprtk_override
10731
0
         {
10732
0
           return str0_node_ptr_->base();
10733
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::base() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::base() const
10734
10735
         std::size_t size() const exprtk_override
10736
0
         {
10737
0
            return str0_node_ptr_->size();
10738
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::size() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::size() const
10739
10740
         range_t& range_ref() exprtk_override
10741
0
         {
10742
0
            return str0_node_ptr_->range_ref();
10743
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::swap_string_node<float>::range_ref()
10744
10745
         const range_t& range_ref() const exprtk_override
10746
0
         {
10747
0
            return str0_node_ptr_->range_ref();
10748
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::range_ref() const
10749
10750
         inline typename expression_node<T>::node_type type() const exprtk_override
10751
0
         {
10752
0
            return expression_node<T>::e_strswap;
10753
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::type() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::type() const
10754
10755
         inline bool valid() const exprtk_override
10756
0
         {
10757
0
            return initialised_ && binary_node<T>::valid();
10758
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::valid() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::valid() const
10759
10760
      private:
10761
10762
         bool initialised_;
10763
         strvar_node_ptr str0_node_ptr_;
10764
         strvar_node_ptr str1_node_ptr_;
10765
      };
10766
10767
      template <typename T>
10768
      class swap_genstrings_node exprtk_final : public binary_node<T>
10769
      {
10770
      public:
10771
10772
         typedef typename range_interface<T>::range_t range_t;
10773
         typedef range_t*             range_ptr;
10774
         typedef range_interface<T>   irange_t;
10775
         typedef irange_t*            irange_ptr;
10776
         typedef expression_node <T>* expression_ptr;
10777
         typedef string_base_node<T>* str_base_ptr;
10778
10779
         using binary_node<T>::branch;
10780
10781
         swap_genstrings_node(expression_ptr branch0,
10782
                              expression_ptr branch1)
10783
12
         : binary_node<T>(details::e_default, branch0, branch1)
10784
12
         , str0_base_ptr_ (0)
10785
12
         , str1_base_ptr_ (0)
10786
12
         , str0_range_ptr_(0)
10787
12
         , str1_range_ptr_(0)
10788
12
         , initialised_(false)
10789
12
         {
10790
12
            if (is_generally_string_node(branch(0)))
10791
12
            {
10792
12
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10793
10794
12
               if (0 == str0_base_ptr_)
10795
0
                  return;
10796
10797
12
               irange_ptr range = dynamic_cast<irange_ptr>(branch(0));
10798
10799
12
               if (0 == range)
10800
0
                  return;
10801
10802
12
               str0_range_ptr_ = &(range->range_ref());
10803
12
            }
10804
10805
12
            if (is_generally_string_node(branch(1)))
10806
12
            {
10807
12
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10808
10809
12
               if (0 == str1_base_ptr_)
10810
0
                  return;
10811
10812
12
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
10813
10814
12
               if (0 == range)
10815
0
                  return;
10816
10817
12
               str1_range_ptr_ = &(range->range_ref());
10818
12
            }
10819
10820
12
            initialised_ = str0_base_ptr_  &&
10821
12
                           str1_base_ptr_  &&
10822
12
                           str0_range_ptr_ &&
10823
12
                           str1_range_ptr_ ;
10824
10825
12
            assert(valid());
10826
12
         }
exprtk::details::swap_genstrings_node<double>::swap_genstrings_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
10783
6
         : binary_node<T>(details::e_default, branch0, branch1)
10784
6
         , str0_base_ptr_ (0)
10785
6
         , str1_base_ptr_ (0)
10786
6
         , str0_range_ptr_(0)
10787
6
         , str1_range_ptr_(0)
10788
6
         , initialised_(false)
10789
6
         {
10790
6
            if (is_generally_string_node(branch(0)))
10791
6
            {
10792
6
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10793
10794
6
               if (0 == str0_base_ptr_)
10795
0
                  return;
10796
10797
6
               irange_ptr range = dynamic_cast<irange_ptr>(branch(0));
10798
10799
6
               if (0 == range)
10800
0
                  return;
10801
10802
6
               str0_range_ptr_ = &(range->range_ref());
10803
6
            }
10804
10805
6
            if (is_generally_string_node(branch(1)))
10806
6
            {
10807
6
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10808
10809
6
               if (0 == str1_base_ptr_)
10810
0
                  return;
10811
10812
6
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
10813
10814
6
               if (0 == range)
10815
0
                  return;
10816
10817
6
               str1_range_ptr_ = &(range->range_ref());
10818
6
            }
10819
10820
6
            initialised_ = str0_base_ptr_  &&
10821
6
                           str1_base_ptr_  &&
10822
6
                           str0_range_ptr_ &&
10823
6
                           str1_range_ptr_ ;
10824
10825
6
            assert(valid());
10826
6
         }
exprtk::details::swap_genstrings_node<float>::swap_genstrings_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
10783
6
         : binary_node<T>(details::e_default, branch0, branch1)
10784
6
         , str0_base_ptr_ (0)
10785
6
         , str1_base_ptr_ (0)
10786
6
         , str0_range_ptr_(0)
10787
6
         , str1_range_ptr_(0)
10788
6
         , initialised_(false)
10789
6
         {
10790
6
            if (is_generally_string_node(branch(0)))
10791
6
            {
10792
6
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10793
10794
6
               if (0 == str0_base_ptr_)
10795
0
                  return;
10796
10797
6
               irange_ptr range = dynamic_cast<irange_ptr>(branch(0));
10798
10799
6
               if (0 == range)
10800
0
                  return;
10801
10802
6
               str0_range_ptr_ = &(range->range_ref());
10803
6
            }
10804
10805
6
            if (is_generally_string_node(branch(1)))
10806
6
            {
10807
6
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10808
10809
6
               if (0 == str1_base_ptr_)
10810
0
                  return;
10811
10812
6
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
10813
10814
6
               if (0 == range)
10815
0
                  return;
10816
10817
6
               str1_range_ptr_ = &(range->range_ref());
10818
6
            }
10819
10820
6
            initialised_ = str0_base_ptr_  &&
10821
6
                           str1_base_ptr_  &&
10822
6
                           str0_range_ptr_ &&
10823
6
                           str1_range_ptr_ ;
10824
10825
6
            assert(valid());
10826
6
         }
10827
10828
         inline T value() const exprtk_override
10829
10
         {
10830
10
            branch(0)->value();
10831
10
            branch(1)->value();
10832
10833
10
            std::size_t str0_r0 = 0;
10834
10
            std::size_t str0_r1 = 0;
10835
10836
10
            std::size_t str1_r0 = 0;
10837
10
            std::size_t str1_r1 = 0;
10838
10839
10
            const range_t& range0 = (*str0_range_ptr_);
10840
10
            const range_t& range1 = (*str1_range_ptr_);
10841
10842
10
            if (
10843
10
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10844
10
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10845
10
               )
10846
10
            {
10847
10
               const std::size_t size0    = range0.cache_size();
10848
10
               const std::size_t size1    = range1.cache_size();
10849
10
               const std::size_t max_size = std::min(size0,size1);
10850
10851
10
               char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0);
10852
10
               char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0);
10853
10854
10
               loop_unroll::details lud(max_size);
10855
10
               char_cptr upper_bound = s0 + lud.upper_bound;
10856
10857
18
               while (s0 < upper_bound)
10858
8
               {
10859
8
                  #define exprtk_loop(N)   \
10860
128
                  std::swap(s0[N], s1[N]); \
10861
8
10862
8
                  exprtk_loop( 0) exprtk_loop( 1)
10863
8
                  exprtk_loop( 2) exprtk_loop( 3)
10864
8
                  #ifndef exprtk_disable_superscalar_unroll
10865
8
                  exprtk_loop( 4) exprtk_loop( 5)
10866
8
                  exprtk_loop( 6) exprtk_loop( 7)
10867
8
                  exprtk_loop( 8) exprtk_loop( 9)
10868
8
                  exprtk_loop(10) exprtk_loop(11)
10869
8
                  exprtk_loop(12) exprtk_loop(13)
10870
8
                  exprtk_loop(14) exprtk_loop(15)
10871
8
                  #endif
10872
10873
8
                  s0 += lud.batch_size;
10874
8
                  s1 += lud.batch_size;
10875
8
               }
10876
10877
10
               int i = 0;
10878
10879
10
               switch (lud.remainder)
10880
10
               {
10881
0
                  #define case_stmt(N)                       \
10882
80
                  case N : { std::swap(s0[i], s1[i]); ++i; } \
10883
80
                  exprtk_fallthrough                         \
10884
0
10885
0
                  #ifndef exprtk_disable_superscalar_unroll
10886
0
                  case_stmt(15) case_stmt(14)
10887
0
                  case_stmt(13) case_stmt(12)
10888
4
                  case_stmt(11) case_stmt(10)
10889
4
                  case_stmt( 9) case_stmt( 8)
10890
10
                  case_stmt( 7) case_stmt( 6)
10891
10
                  case_stmt( 5) case_stmt( 4)
10892
10
                  #endif
10893
10
                  case_stmt( 3) case_stmt( 2)
10894
10
                  case_stmt( 1)
10895
10
                  default: break;
10896
10
               }
10897
10898
10
               #undef exprtk_loop
10899
10
               #undef case_stmt
10900
10
            }
10901
10902
10
            return std::numeric_limits<T>::quiet_NaN();
10903
10
         }
exprtk::details::swap_genstrings_node<double>::value() const
Line
Count
Source
10829
5
         {
10830
5
            branch(0)->value();
10831
5
            branch(1)->value();
10832
10833
5
            std::size_t str0_r0 = 0;
10834
5
            std::size_t str0_r1 = 0;
10835
10836
5
            std::size_t str1_r0 = 0;
10837
5
            std::size_t str1_r1 = 0;
10838
10839
5
            const range_t& range0 = (*str0_range_ptr_);
10840
5
            const range_t& range1 = (*str1_range_ptr_);
10841
10842
5
            if (
10843
5
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10844
5
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10845
5
               )
10846
5
            {
10847
5
               const std::size_t size0    = range0.cache_size();
10848
5
               const std::size_t size1    = range1.cache_size();
10849
5
               const std::size_t max_size = std::min(size0,size1);
10850
10851
5
               char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0);
10852
5
               char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0);
10853
10854
5
               loop_unroll::details lud(max_size);
10855
5
               char_cptr upper_bound = s0 + lud.upper_bound;
10856
10857
9
               while (s0 < upper_bound)
10858
4
               {
10859
4
                  #define exprtk_loop(N)   \
10860
4
                  std::swap(s0[N], s1[N]); \
10861
4
10862
4
                  exprtk_loop( 0) exprtk_loop( 1)
10863
4
                  exprtk_loop( 2) exprtk_loop( 3)
10864
4
                  #ifndef exprtk_disable_superscalar_unroll
10865
4
                  exprtk_loop( 4) exprtk_loop( 5)
10866
4
                  exprtk_loop( 6) exprtk_loop( 7)
10867
4
                  exprtk_loop( 8) exprtk_loop( 9)
10868
4
                  exprtk_loop(10) exprtk_loop(11)
10869
4
                  exprtk_loop(12) exprtk_loop(13)
10870
4
                  exprtk_loop(14) exprtk_loop(15)
10871
4
                  #endif
10872
10873
4
                  s0 += lud.batch_size;
10874
4
                  s1 += lud.batch_size;
10875
4
               }
10876
10877
5
               int i = 0;
10878
10879
5
               switch (lud.remainder)
10880
5
               {
10881
0
                  #define case_stmt(N)                       \
10882
0
                  case N : { std::swap(s0[i], s1[i]); ++i; } \
10883
0
                  exprtk_fallthrough                         \
10884
0
10885
0
                  #ifndef exprtk_disable_superscalar_unroll
10886
0
                  case_stmt(15) case_stmt(14)
10887
0
                  case_stmt(13) case_stmt(12)
10888
2
                  case_stmt(11) case_stmt(10)
10889
2
                  case_stmt( 9) case_stmt( 8)
10890
5
                  case_stmt( 7) case_stmt( 6)
10891
5
                  case_stmt( 5) case_stmt( 4)
10892
5
                  #endif
10893
5
                  case_stmt( 3) case_stmt( 2)
10894
5
                  case_stmt( 1)
10895
5
                  default: break;
10896
5
               }
10897
10898
5
               #undef exprtk_loop
10899
5
               #undef case_stmt
10900
5
            }
10901
10902
5
            return std::numeric_limits<T>::quiet_NaN();
10903
5
         }
exprtk::details::swap_genstrings_node<float>::value() const
Line
Count
Source
10829
5
         {
10830
5
            branch(0)->value();
10831
5
            branch(1)->value();
10832
10833
5
            std::size_t str0_r0 = 0;
10834
5
            std::size_t str0_r1 = 0;
10835
10836
5
            std::size_t str1_r0 = 0;
10837
5
            std::size_t str1_r1 = 0;
10838
10839
5
            const range_t& range0 = (*str0_range_ptr_);
10840
5
            const range_t& range1 = (*str1_range_ptr_);
10841
10842
5
            if (
10843
5
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10844
5
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10845
5
               )
10846
5
            {
10847
5
               const std::size_t size0    = range0.cache_size();
10848
5
               const std::size_t size1    = range1.cache_size();
10849
5
               const std::size_t max_size = std::min(size0,size1);
10850
10851
5
               char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0);
10852
5
               char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0);
10853
10854
5
               loop_unroll::details lud(max_size);
10855
5
               char_cptr upper_bound = s0 + lud.upper_bound;
10856
10857
9
               while (s0 < upper_bound)
10858
4
               {
10859
4
                  #define exprtk_loop(N)   \
10860
4
                  std::swap(s0[N], s1[N]); \
10861
4
10862
4
                  exprtk_loop( 0) exprtk_loop( 1)
10863
4
                  exprtk_loop( 2) exprtk_loop( 3)
10864
4
                  #ifndef exprtk_disable_superscalar_unroll
10865
4
                  exprtk_loop( 4) exprtk_loop( 5)
10866
4
                  exprtk_loop( 6) exprtk_loop( 7)
10867
4
                  exprtk_loop( 8) exprtk_loop( 9)
10868
4
                  exprtk_loop(10) exprtk_loop(11)
10869
4
                  exprtk_loop(12) exprtk_loop(13)
10870
4
                  exprtk_loop(14) exprtk_loop(15)
10871
4
                  #endif
10872
10873
4
                  s0 += lud.batch_size;
10874
4
                  s1 += lud.batch_size;
10875
4
               }
10876
10877
5
               int i = 0;
10878
10879
5
               switch (lud.remainder)
10880
5
               {
10881
0
                  #define case_stmt(N)                       \
10882
0
                  case N : { std::swap(s0[i], s1[i]); ++i; } \
10883
0
                  exprtk_fallthrough                         \
10884
0
10885
0
                  #ifndef exprtk_disable_superscalar_unroll
10886
0
                  case_stmt(15) case_stmt(14)
10887
0
                  case_stmt(13) case_stmt(12)
10888
2
                  case_stmt(11) case_stmt(10)
10889
2
                  case_stmt( 9) case_stmt( 8)
10890
5
                  case_stmt( 7) case_stmt( 6)
10891
5
                  case_stmt( 5) case_stmt( 4)
10892
5
                  #endif
10893
5
                  case_stmt( 3) case_stmt( 2)
10894
5
                  case_stmt( 1)
10895
5
                  default: break;
10896
5
               }
10897
10898
5
               #undef exprtk_loop
10899
5
               #undef case_stmt
10900
5
            }
10901
10902
5
            return std::numeric_limits<T>::quiet_NaN();
10903
5
         }
10904
10905
         inline typename expression_node<T>::node_type type() const exprtk_override
10906
62
         {
10907
62
            return expression_node<T>::e_strswap;
10908
62
         }
exprtk::details::swap_genstrings_node<double>::type() const
Line
Count
Source
10906
31
         {
10907
31
            return expression_node<T>::e_strswap;
10908
31
         }
exprtk::details::swap_genstrings_node<float>::type() const
Line
Count
Source
10906
31
         {
10907
31
            return expression_node<T>::e_strswap;
10908
31
         }
10909
10910
         inline bool valid() const exprtk_override
10911
24
         {
10912
24
            return initialised_ && binary_node<T>::valid();
10913
24
         }
exprtk::details::swap_genstrings_node<double>::valid() const
Line
Count
Source
10911
12
         {
10912
12
            return initialised_ && binary_node<T>::valid();
10913
12
         }
exprtk::details::swap_genstrings_node<float>::valid() const
Line
Count
Source
10911
12
         {
10912
12
            return initialised_ && binary_node<T>::valid();
10913
12
         }
10914
10915
      private:
10916
10917
         swap_genstrings_node(const swap_genstrings_node<T>&) exprtk_delete;
10918
         swap_genstrings_node<T>& operator=(const swap_genstrings_node<T>&) exprtk_delete;
10919
10920
         str_base_ptr str0_base_ptr_;
10921
         str_base_ptr str1_base_ptr_;
10922
         range_ptr    str0_range_ptr_;
10923
         range_ptr    str1_range_ptr_;
10924
         bool         initialised_;
10925
      };
10926
10927
      template <typename T>
10928
      class stringvar_size_node exprtk_final : public expression_node<T>
10929
      {
10930
      public:
10931
10932
         static const std::string null_value;
10933
10934
         explicit stringvar_size_node()
10935
         : value_(&null_value)
10936
         {}
10937
10938
         explicit stringvar_size_node(std::string& v)
10939
0
         : value_(&v)
10940
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> >&)
10941
10942
         inline T value() const exprtk_override
10943
0
         {
10944
0
            return T((*value_).size());
10945
0
         }
Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::value() const
Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::value() const
10946
10947
         inline typename expression_node<T>::node_type type() const exprtk_override
10948
0
         {
10949
0
            return expression_node<T>::e_stringvarsize;
10950
0
         }
Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::type() const
Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::type() const
10951
10952
      private:
10953
10954
         const std::string* value_;
10955
      };
10956
10957
      template <typename T>
10958
      const std::string stringvar_size_node<T>::null_value = std::string("");
10959
10960
      template <typename T>
10961
      class string_size_node exprtk_final : public expression_node<T>
10962
      {
10963
      public:
10964
10965
         typedef expression_node <T>* expression_ptr;
10966
         typedef string_base_node<T>* str_base_ptr;
10967
         typedef std::pair<expression_ptr,bool>  branch_t;
10968
10969
         explicit string_size_node(expression_ptr branch)
10970
0
         : str_base_ptr_(0)
10971
0
         {
10972
0
            construct_branch_pair(branch_, branch);
10973
10974
0
            if (is_generally_string_node(branch_.first))
10975
0
            {
10976
0
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);
10977
0
            }
10978
10979
0
            assert(valid());
10980
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>*)
10981
10982
         inline T value() const exprtk_override
10983
0
         {
10984
0
            branch_.first->value();
10985
0
            return T(str_base_ptr_->size());
10986
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::value() const
Unexecuted instantiation: exprtk::details::string_size_node<float>::value() const
10987
10988
         inline typename expression_node<T>::node_type type() const exprtk_override
10989
0
         {
10990
0
            return expression_node<T>::e_stringsize;
10991
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::type() const
Unexecuted instantiation: exprtk::details::string_size_node<float>::type() const
10992
10993
         inline bool valid() const exprtk_override
10994
0
         {
10995
0
            return str_base_ptr_;
10996
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::valid() const
Unexecuted instantiation: exprtk::details::string_size_node<float>::valid() const
10997
10998
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
10999
0
         {
11000
0
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
11001
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>**> >&)
11002
11003
         std::size_t node_depth() const exprtk_override
11004
0
         {
11005
0
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
11006
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::string_size_node<float>::node_depth() const
11007
11008
      private:
11009
11010
         branch_t     branch_;
11011
         str_base_ptr str_base_ptr_;
11012
      };
11013
11014
      struct asn_assignment
11015
      {
11016
         static inline void execute(std::string& s, char_cptr data, const std::size_t size)
11017
0
         { s.assign(data,size); }
11018
      };
11019
11020
      struct asn_addassignment
11021
      {
11022
         static inline void execute(std::string& s, char_cptr data, const std::size_t size)
11023
0
         { s.append(data,size); }
11024
      };
11025
11026
      template <typename T, typename AssignmentProcess = asn_assignment>
11027
      class assignment_string_node exprtk_final
11028
                                   : public binary_node     <T>
11029
                                   , public string_base_node<T>
11030
                                   , public range_interface <T>
11031
      {
11032
      public:
11033
11034
         typedef typename range_interface<T>::range_t range_t;
11035
         typedef range_t*             range_ptr;
11036
         typedef range_interface <T>  irange_t;
11037
         typedef irange_t*            irange_ptr;
11038
         typedef expression_node <T>* expression_ptr;
11039
         typedef stringvar_node  <T>* strvar_node_ptr;
11040
         typedef string_base_node<T>* str_base_ptr;
11041
11042
         using binary_node<T>::branch;
11043
11044
         assignment_string_node(const operator_type& opr,
11045
                                expression_ptr branch0,
11046
                                expression_ptr branch1)
11047
0
         : binary_node<T>(opr, branch0, branch1)
11048
0
         , initialised_(false)
11049
0
         , str0_base_ptr_ (0)
11050
0
         , str1_base_ptr_ (0)
11051
0
         , str0_node_ptr_ (0)
11052
0
         , str1_range_ptr_(0)
11053
0
         {
11054
0
            if (is_string_node(branch(0)))
11055
0
            {
11056
0
               str0_node_ptr_ = static_cast<strvar_node_ptr>(branch(0));
11057
0
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
11058
0
            }
11059
11060
0
            if (is_generally_string_node(branch(1)))
11061
0
            {
11062
0
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
11063
11064
0
               if (0 == str1_base_ptr_)
11065
0
                  return;
11066
11067
0
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
11068
11069
0
               if (0 == range)
11070
0
                  return;
11071
11072
0
               str1_range_ptr_ = &(range->range_ref());
11073
0
            }
11074
11075
0
            initialised_ = str0_base_ptr_  &&
11076
0
                           str1_base_ptr_  &&
11077
0
                           str0_node_ptr_  &&
11078
0
                           str1_range_ptr_ ;
11079
11080
0
            assert(valid());
11081
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>*)
11082
11083
         inline T value() const exprtk_override
11084
0
         {
11085
0
            branch(1)->value();
11086
11087
0
            std::size_t r0 = 0;
11088
0
            std::size_t r1 = 0;
11089
11090
0
            const range_t& range = (*str1_range_ptr_);
11091
11092
0
            if (range(r0, r1, str1_base_ptr_->size()))
11093
0
            {
11094
0
               AssignmentProcess::execute(
11095
0
                  str0_node_ptr_->ref(),
11096
0
                  str1_base_ptr_->base() + r0, (r1 - r0));
11097
11098
0
               branch(0)->value();
11099
0
            }
11100
11101
0
            return std::numeric_limits<T>::quiet_NaN();
11102
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
11103
11104
         std::string str() const exprtk_override
11105
0
         {
11106
0
            return str0_node_ptr_->str();
11107
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
11108
11109
         char_cptr base() const exprtk_override
11110
0
         {
11111
0
           return str0_node_ptr_->base();
11112
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
11113
11114
         std::size_t size() const exprtk_override
11115
0
         {
11116
0
            return str0_node_ptr_->size();
11117
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
11118
11119
         range_t& range_ref() exprtk_override
11120
0
         {
11121
0
            return str0_node_ptr_->range_ref();
11122
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()
11123
11124
         const range_t& range_ref() const exprtk_override
11125
0
         {
11126
0
            return str0_node_ptr_->range_ref();
11127
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
11128
11129
         inline typename expression_node<T>::node_type type() const exprtk_override
11130
0
         {
11131
0
            return expression_node<T>::e_strass;
11132
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
11133
11134
         inline bool valid() const exprtk_override
11135
0
         {
11136
0
            return initialised_ && binary_node<T>::valid();
11137
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
11138
11139
      private:
11140
11141
         bool            initialised_;
11142
         str_base_ptr    str0_base_ptr_;
11143
         str_base_ptr    str1_base_ptr_;
11144
         strvar_node_ptr str0_node_ptr_;
11145
         range_ptr       str1_range_ptr_;
11146
      };
11147
11148
      template <typename T, typename AssignmentProcess = asn_assignment>
11149
      class assignment_string_range_node exprtk_final
11150
                                         : public binary_node     <T>
11151
                                         , public string_base_node<T>
11152
                                         , public range_interface <T>
11153
      {
11154
      public:
11155
11156
         typedef typename range_interface<T>::range_t range_t;
11157
         typedef range_t*              range_ptr;
11158
         typedef range_interface  <T>  irange_t;
11159
         typedef irange_t*             irange_ptr;
11160
         typedef expression_node  <T>* expression_ptr;
11161
         typedef stringvar_node   <T>* strvar_node_ptr;
11162
         typedef string_range_node<T>* str_rng_node_ptr;
11163
         typedef string_base_node <T>* str_base_ptr;
11164
11165
         using binary_node<T>::branch;
11166
11167
         assignment_string_range_node(const operator_type& opr,
11168
                                      expression_ptr branch0,
11169
                                      expression_ptr branch1)
11170
0
         : binary_node<T>(opr, branch0, branch1)
11171
0
         , initialised_(false)
11172
0
         , str0_base_ptr_    (0)
11173
0
         , str1_base_ptr_    (0)
11174
0
         , str0_rng_node_ptr_(0)
11175
0
         , str0_range_ptr_   (0)
11176
0
         , str1_range_ptr_   (0)
11177
0
         {
11178
0
            if (is_string_range_node(branch(0)))
11179
0
            {
11180
0
               str0_rng_node_ptr_ = static_cast<str_rng_node_ptr>(branch(0));
11181
0
               str0_base_ptr_     = dynamic_cast<str_base_ptr>(branch(0));
11182
0
               irange_ptr range   = dynamic_cast<irange_ptr>(branch(0));
11183
11184
0
               if (0 == range)
11185
0
                  return;
11186
11187
0
               str0_range_ptr_ = &(range->range_ref());
11188
0
            }
11189
11190
0
            if (is_generally_string_node(branch(1)))
11191
0
            {
11192
0
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
11193
11194
0
               if (0 == str1_base_ptr_)
11195
0
                  return;
11196
11197
0
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
11198
11199
0
               if (0 == range)
11200
0
                  return;
11201
11202
0
               str1_range_ptr_ = &(range->range_ref());
11203
0
            }
11204
11205
0
            initialised_ = str0_base_ptr_     &&
11206
0
                           str1_base_ptr_     &&
11207
0
                           str0_rng_node_ptr_ &&
11208
0
                           str0_range_ptr_    &&
11209
0
                           str1_range_ptr_    ;
11210
11211
0
            assert(valid());
11212
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>*)
11213
11214
         inline T value() const exprtk_override
11215
0
         {
11216
0
            branch(0)->value();
11217
0
            branch(1)->value();
11218
11219
0
            std::size_t s0_r0 = 0;
11220
0
            std::size_t s0_r1 = 0;
11221
11222
0
            std::size_t s1_r0 = 0;
11223
0
            std::size_t s1_r1 = 0;
11224
11225
0
            const range_t& range0 = (*str0_range_ptr_);
11226
0
            const range_t& range1 = (*str1_range_ptr_);
11227
11228
0
            if (
11229
0
                  range0(s0_r0, s0_r1, str0_base_ptr_->size()) &&
11230
0
                  range1(s1_r0, s1_r1, str1_base_ptr_->size())
11231
0
               )
11232
0
            {
11233
0
               const std::size_t size = std::min((s0_r1 - s0_r0), (s1_r1 - s1_r0));
11234
11235
0
               std::copy(
11236
0
                  str1_base_ptr_->base() + s1_r0,
11237
0
                  str1_base_ptr_->base() + s1_r0 + size,
11238
0
                  const_cast<char_ptr>(base() + s0_r0));
11239
0
            }
11240
11241
0
            return std::numeric_limits<T>::quiet_NaN();
11242
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
11243
11244
         std::string str() const exprtk_override
11245
0
         {
11246
0
            return str0_base_ptr_->str();
11247
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
11248
11249
         char_cptr base() const exprtk_override
11250
0
         {
11251
0
            return str0_base_ptr_->base();
11252
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
11253
11254
         std::size_t size() const exprtk_override
11255
0
         {
11256
0
            return str0_base_ptr_->size();
11257
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
11258
11259
         range_t& range_ref() exprtk_override
11260
0
         {
11261
0
            return str0_rng_node_ptr_->range_ref();
11262
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()
11263
11264
         const range_t& range_ref() const exprtk_override
11265
0
         {
11266
0
            return str0_rng_node_ptr_->range_ref();
11267
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
11268
11269
         inline typename expression_node<T>::node_type type() const exprtk_override
11270
0
         {
11271
0
            return expression_node<T>::e_strass;
11272
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
11273
11274
         inline bool valid() const exprtk_override
11275
0
         {
11276
0
            return initialised_ && binary_node<T>::valid();
11277
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
11278
11279
      private:
11280
11281
         bool             initialised_;
11282
         str_base_ptr     str0_base_ptr_;
11283
         str_base_ptr     str1_base_ptr_;
11284
         str_rng_node_ptr str0_rng_node_ptr_;
11285
         range_ptr        str0_range_ptr_;
11286
         range_ptr        str1_range_ptr_;
11287
      };
11288
11289
      template <typename T>
11290
      class conditional_string_node exprtk_final
11291
                                    : public trinary_node    <T>
11292
                                    , public string_base_node<T>
11293
                                    , public range_interface <T>
11294
      {
11295
      public:
11296
11297
         typedef typename range_interface<T>::range_t range_t;
11298
         typedef range_t*             range_ptr;
11299
         typedef range_interface <T>  irange_t;
11300
         typedef irange_t*            irange_ptr;
11301
         typedef expression_node <T>* expression_ptr;
11302
         typedef string_base_node<T>* str_base_ptr;
11303
11304
         conditional_string_node(expression_ptr condition,
11305
                                 expression_ptr consequent,
11306
                                 expression_ptr alternative)
11307
0
         : trinary_node<T>(details::e_default, consequent, alternative, condition)
11308
0
         , initialised_(false)
11309
0
         , str0_base_ptr_ (0)
11310
0
         , str1_base_ptr_ (0)
11311
0
         , str0_range_ptr_(0)
11312
0
         , str1_range_ptr_(0)
11313
0
         , condition_  (condition  )
11314
0
         , consequent_ (consequent )
11315
0
         , alternative_(alternative)
11316
0
         {
11317
0
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
11318
0
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
11319
11320
0
            range_.cache.first  = range_.n0_c.second;
11321
0
            range_.cache.second = range_.n1_c.second;
11322
11323
0
            if (is_generally_string_node(trinary_node<T>::branch_[0].first))
11324
0
            {
11325
0
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[0].first);
11326
11327
0
               if (0 == str0_base_ptr_)
11328
0
                  return;
11329
11330
0
               str0_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[0].first);
11331
11332
0
               if (0 == str0_range_ptr_)
11333
0
                  return;
11334
0
            }
11335
11336
0
            if (is_generally_string_node(trinary_node<T>::branch_[1].first))
11337
0
            {
11338
0
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[1].first);
11339
11340
0
               if (0 == str1_base_ptr_)
11341
0
                  return;
11342
11343
0
               str1_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[1].first);
11344
11345
0
               if (0 == str1_range_ptr_)
11346
0
                  return;
11347
0
            }
11348
11349
0
            initialised_ = str0_base_ptr_  &&
11350
0
                           str1_base_ptr_  &&
11351
0
                           str0_range_ptr_ &&
11352
0
                           str1_range_ptr_ ;
11353
11354
0
            assert(valid());
11355
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>*)
11356
11357
         inline T value() const exprtk_override
11358
0
         {
11359
0
            std::size_t r0 = 0;
11360
0
            std::size_t r1 = 0;
11361
11362
0
            if (is_true(condition_))
11363
0
            {
11364
0
               consequent_->value();
11365
11366
0
               const range_t& range = str0_range_ptr_->range_ref();
11367
11368
0
               if (range(r0, r1, str0_base_ptr_->size()))
11369
0
               {
11370
0
                  const std::size_t size = (r1 - r0);
11371
11372
0
                  value_.assign(str0_base_ptr_->base() + r0, size);
11373
11374
0
                  range_.n1_c.second  = value_.size();
11375
0
                  range_.cache.second = range_.n1_c.second;
11376
11377
0
                  return T(1);
11378
0
               }
11379
0
            }
11380
0
            else
11381
0
            {
11382
0
               alternative_->value();
11383
11384
0
               const range_t& range = str1_range_ptr_->range_ref();
11385
11386
0
               if (range(r0, r1, str1_base_ptr_->size()))
11387
0
               {
11388
0
                  const std::size_t size = (r1 - r0);
11389
11390
0
                  value_.assign(str1_base_ptr_->base() + r0, size);
11391
11392
0
                  range_.n1_c.second  = value_.size();
11393
0
                  range_.cache.second = range_.n1_c.second;
11394
11395
0
                  return T(0);
11396
0
               }
11397
0
            }
11398
11399
0
            return std::numeric_limits<T>::quiet_NaN();
11400
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::value() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::value() const
11401
11402
         std::string str() const exprtk_override
11403
0
         {
11404
0
            return value_;
11405
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::str() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::str() const
11406
11407
         char_cptr base() const exprtk_override
11408
0
         {
11409
0
            return &value_[0];
11410
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::base() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::base() const
11411
11412
         std::size_t size() const exprtk_override
11413
0
         {
11414
0
            return value_.size();
11415
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::size() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::size() const
11416
11417
         range_t& range_ref() exprtk_override
11418
0
         {
11419
0
            return range_;
11420
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::range_ref()
11421
11422
         const range_t& range_ref() const exprtk_override
11423
0
         {
11424
0
            return range_;
11425
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::range_ref() const
11426
11427
         inline typename expression_node<T>::node_type type() const exprtk_override
11428
0
         {
11429
0
            return expression_node<T>::e_strcondition;
11430
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::type() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::type() const
11431
11432
         inline bool valid() const exprtk_override
11433
0
         {
11434
0
            return
11435
0
               initialised_                         &&
11436
0
               condition_  && condition_  ->valid() &&
11437
0
               consequent_ && consequent_ ->valid() &&
11438
0
               alternative_&& alternative_->valid() ;
11439
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::valid() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::valid() const
11440
11441
      private:
11442
11443
         bool initialised_;
11444
         str_base_ptr str0_base_ptr_;
11445
         str_base_ptr str1_base_ptr_;
11446
         irange_ptr   str0_range_ptr_;
11447
         irange_ptr   str1_range_ptr_;
11448
         mutable range_t     range_;
11449
         mutable std::string value_;
11450
11451
         expression_ptr condition_;
11452
         expression_ptr consequent_;
11453
         expression_ptr alternative_;
11454
      };
11455
11456
      template <typename T>
11457
      class cons_conditional_str_node exprtk_final
11458
                                      : public binary_node     <T>
11459
                                      , public string_base_node<T>
11460
                                      , public range_interface <T>
11461
      {
11462
      public:
11463
11464
         typedef typename range_interface<T>::range_t range_t;
11465
         typedef range_t*             range_ptr;
11466
         typedef range_interface <T>  irange_t;
11467
         typedef irange_t*            irange_ptr;
11468
         typedef expression_node <T>* expression_ptr;
11469
         typedef string_base_node<T>* str_base_ptr;
11470
11471
         using binary_node<T>::branch;
11472
11473
         cons_conditional_str_node(expression_ptr condition,
11474
                                   expression_ptr consequent)
11475
         : binary_node<T>(details::e_default, consequent, condition)
11476
         , initialised_(false)
11477
         , str0_base_ptr_ (0)
11478
         , str0_range_ptr_(0)
11479
         , condition_ (condition )
11480
         , consequent_(consequent)
11481
         {
11482
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
11483
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
11484
11485
            range_.cache.first  = range_.n0_c.second;
11486
            range_.cache.second = range_.n1_c.second;
11487
11488
            if (is_generally_string_node(branch(0)))
11489
            {
11490
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
11491
11492
               if (0 == str0_base_ptr_)
11493
                  return;
11494
11495
               str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0));
11496
11497
               if (0 == str0_range_ptr_)
11498
                  return;
11499
            }
11500
11501
            initialised_ = str0_base_ptr_ && str0_range_ptr_ ;
11502
            assert(valid());
11503
         }
11504
11505
         inline T value() const exprtk_override
11506
         {
11507
            if (is_true(condition_))
11508
            {
11509
               consequent_->value();
11510
11511
               const range_t& range = str0_range_ptr_->range_ref();
11512
11513
               std::size_t r0 = 0;
11514
               std::size_t r1 = 0;
11515
11516
               if (range(r0, r1, str0_base_ptr_->size()))
11517
               {
11518
                  const std::size_t size = (r1 - r0);
11519
11520
                  value_.assign(str0_base_ptr_->base() + r0, size);
11521
11522
                  range_.n1_c.second  = value_.size();
11523
                  range_.cache.second = range_.n1_c.second;
11524
11525
                  return T(1);
11526
               }
11527
            }
11528
11529
            return std::numeric_limits<T>::quiet_NaN();
11530
         }
11531
11532
         std::string str() const
11533
         {
11534
            return value_;
11535
         }
11536
11537
         char_cptr base() const
11538
         {
11539
            return &value_[0];
11540
         }
11541
11542
         std::size_t size() const
11543
         {
11544
            return value_.size();
11545
         }
11546
11547
         range_t& range_ref()
11548
         {
11549
            return range_;
11550
         }
11551
11552
         const range_t& range_ref() const
11553
         {
11554
            return range_;
11555
         }
11556
11557
         inline typename expression_node<T>::node_type type() const exprtk_override
11558
         {
11559
            return expression_node<T>::e_strccondition;
11560
         }
11561
11562
         inline bool valid() const exprtk_override
11563
         {
11564
            return
11565
               initialised_                         &&
11566
               condition_  && condition_  ->valid() &&
11567
               consequent_ && consequent_ ->valid() ;
11568
         }
11569
11570
      private:
11571
11572
         bool initialised_;
11573
         str_base_ptr str0_base_ptr_;
11574
         irange_ptr   str0_range_ptr_;
11575
         mutable range_t     range_;
11576
         mutable std::string value_;
11577
11578
         expression_ptr condition_;
11579
         expression_ptr consequent_;
11580
      };
11581
11582
      template <typename T, typename VarArgFunction>
11583
      class str_vararg_node exprtk_final
11584
                            : public expression_node <T>
11585
                            , public string_base_node<T>
11586
                            , public range_interface <T>
11587
      {
11588
      public:
11589
11590
         typedef typename range_interface<T>::range_t range_t;
11591
         typedef range_t*             range_ptr;
11592
         typedef range_interface <T>  irange_t;
11593
         typedef irange_t*            irange_ptr;
11594
         typedef expression_node <T>* expression_ptr;
11595
         typedef string_base_node<T>* str_base_ptr;
11596
         typedef std::pair<expression_ptr,bool> branch_t;
11597
11598
         template <typename Allocator,
11599
                   template <typename, typename> class Sequence>
11600
         explicit str_vararg_node(const Sequence<expression_ptr,Allocator>& arg_list)
11601
0
         : initialised_(false)
11602
0
         , str_base_ptr_ (0)
11603
0
         , str_range_ptr_(0)
11604
0
         {
11605
0
            construct_branch_pair(final_node_, const_cast<expression_ptr>(arg_list.back()));
11606
11607
0
            if (0 == final_node_.first)
11608
0
               return;
11609
0
            else if (!is_generally_string_node(final_node_.first))
11610
0
               return;
11611
11612
0
            str_base_ptr_ = dynamic_cast<str_base_ptr>(final_node_.first);
11613
11614
0
            if (0 == str_base_ptr_)
11615
0
               return;
11616
11617
0
            str_range_ptr_ = dynamic_cast<irange_ptr>(final_node_.first);
11618
11619
0
            if (0 == str_range_ptr_)
11620
0
               return;
11621
11622
0
            if (arg_list.size() > 1)
11623
0
            {
11624
0
               const std::size_t arg_list_size = arg_list.size() - 1;
11625
11626
0
               arg_list_.resize(arg_list_size);
11627
11628
0
               for (std::size_t i = 0; i < arg_list_size; ++i)
11629
0
               {
11630
0
                  if (arg_list[i] && arg_list[i]->valid())
11631
0
                  {
11632
0
                     construct_branch_pair(arg_list_[i], arg_list[i]);
11633
0
                  }
11634
0
                  else
11635
0
                  {
11636
0
                     arg_list_.clear();
11637
0
                     return;
11638
0
                  }
11639
0
               }
11640
11641
0
               initialised_ = true;
11642
0
            }
11643
11644
0
            initialised_ &= str_base_ptr_ && str_range_ptr_;
11645
0
            assert(valid());
11646
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&)
11647
11648
         inline T value() const exprtk_override
11649
0
         {
11650
0
            if (!arg_list_.empty())
11651
0
            {
11652
0
               VarArgFunction::process(arg_list_);
11653
0
            }
11654
11655
0
            final_node_.first->value();
11656
11657
0
            return std::numeric_limits<T>::quiet_NaN();
11658
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
11659
11660
         std::string str() const exprtk_override
11661
0
         {
11662
0
            return str_base_ptr_->str();
11663
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
11664
11665
         char_cptr base() const exprtk_override
11666
0
         {
11667
0
            return str_base_ptr_->base();
11668
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
11669
11670
         std::size_t size() const exprtk_override
11671
0
         {
11672
0
            return str_base_ptr_->size();
11673
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
11674
11675
         range_t& range_ref() exprtk_override
11676
0
         {
11677
0
            return str_range_ptr_->range_ref();
11678
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()
11679
11680
         const range_t& range_ref() const exprtk_override
11681
0
         {
11682
0
            return str_range_ptr_->range_ref();
11683
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
11684
11685
         inline typename expression_node<T>::node_type type() const exprtk_override
11686
0
         {
11687
0
            return expression_node<T>::e_stringvararg;
11688
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
11689
11690
         inline bool valid() const exprtk_override
11691
0
         {
11692
0
            return
11693
0
               initialised_ &&
11694
0
               final_node_.first && final_node_.first->valid();
11695
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
11696
11697
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
11698
0
         {
11699
0
            expression_node<T>::ndb_t::collect(final_node_ , node_delete_list);
11700
0
            expression_node<T>::ndb_t::collect(arg_list_   , node_delete_list);
11701
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>**> >&)
11702
11703
         std::size_t node_depth() const exprtk_override
11704
0
         {
11705
0
            return std::max(
11706
0
               expression_node<T>::ndb_t::compute_node_depth(final_node_),
11707
0
               expression_node<T>::ndb_t::compute_node_depth(arg_list_  ));
11708
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
11709
11710
      private:
11711
11712
         bool                  initialised_;
11713
         branch_t              final_node_;
11714
         str_base_ptr          str_base_ptr_;
11715
         irange_ptr            str_range_ptr_;
11716
         std::vector<branch_t> arg_list_;
11717
      };
11718
      #endif
11719
11720
      template <typename T>
11721
      class assert_node exprtk_final : public expression_node<T>
11722
      {
11723
      public:
11724
11725
         typedef expression_node<T>* expression_ptr;
11726
         typedef std::pair<expression_ptr,bool> branch_t;
11727
         typedef string_base_node<T>* str_base_ptr;
11728
         typedef assert_check::assert_context assert_context_t;
11729
11730
         assert_node(expression_ptr   assert_condition_node,
11731
                     expression_ptr   assert_message_node,
11732
                     assert_check_ptr assert_check,
11733
                     assert_context_t context)
11734
0
         : assert_message_str_base_(0)
11735
0
         , assert_check_(assert_check)
11736
0
         , context_(context)
11737
0
         {
11738
0
            construct_branch_pair(assert_condition_node_, assert_condition_node);
11739
0
            construct_branch_pair(assert_message_node_  , assert_message_node  );
11740
11741
0
            #ifndef exprtk_disable_string_capabilities
11742
0
            if (
11743
0
                  assert_message_node_.first &&
11744
0
                  details::is_generally_string_node(assert_message_node_.first)
11745
0
               )
11746
0
            {
11747
0
               assert_message_str_base_ = dynamic_cast<str_base_ptr>(assert_message_node_.first);
11748
0
            }
11749
0
            #endif
11750
11751
0
            assert(valid());
11752
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)
11753
11754
         inline T value() const exprtk_override
11755
0
         {
11756
0
            if (details::is_true(assert_condition_node_.first->value()))
11757
0
            {
11758
0
               return T(1);
11759
0
            }
11760
11761
0
            #ifndef exprtk_disable_string_capabilities
11762
0
            if (assert_message_node_.first)
11763
0
            {
11764
0
               assert_message_node_.first->value();
11765
0
               assert(assert_message_str_base_);
11766
0
               context_.message = assert_message_str_base_->str();
11767
0
            }
11768
0
            #endif
11769
11770
0
            assert_check_->handle_assert(context_);
11771
0
            return T(0);
11772
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::value() const
Unexecuted instantiation: exprtk::details::assert_node<float>::value() const
11773
11774
         inline typename expression_node<T>::node_type type() const exprtk_override
11775
0
         {
11776
0
            return expression_node<T>::e_assert;
11777
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::type() const
Unexecuted instantiation: exprtk::details::assert_node<float>::type() const
11778
11779
         inline bool valid() const exprtk_override
11780
0
         {
11781
0
            return (
11782
0
                     assert_check_ &&
11783
0
                     assert_condition_node_.first &&
11784
0
                     assert_condition_node_.first->valid()
11785
0
                   ) &&
11786
0
                   (
11787
0
                     (0 == assert_message_node_.first) ||
11788
0
                     (
11789
0
                       assert_message_node_.first &&
11790
0
                       assert_message_str_base_   &&
11791
0
                       assert_message_node_.first->valid() &&
11792
0
                       details::is_generally_string_node(assert_message_node_.first)
11793
0
                     )
11794
0
                   );
11795
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assert_node<float>::valid() const
11796
11797
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
11798
0
         {
11799
0
            expression_node<T>::ndb_t::collect(assert_condition_node_, node_delete_list);
11800
0
            expression_node<T>::ndb_t::collect(assert_message_node_  , node_delete_list);
11801
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>**> >&)
11802
11803
         std::size_t node_depth() const exprtk_override
11804
0
         {
11805
0
            return expression_node<T>::ndb_t::compute_node_depth
11806
0
               (assert_condition_node_, assert_message_node_);
11807
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::assert_node<float>::node_depth() const
11808
11809
      private:
11810
11811
         branch_t         assert_condition_node_;
11812
         branch_t         assert_message_node_;
11813
         str_base_ptr     assert_message_str_base_;
11814
         assert_check_ptr assert_check_;
11815
         mutable assert_context_t context_;
11816
      };
11817
11818
      template <typename T, std::size_t N>
11819
      inline T axn(const T a, const T x)
11820
0
      {
11821
         // a*x^n
11822
0
         return a * exprtk::details::numeric::fast_exp<T,N>::result(x);
11823
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)
11824
11825
      template <typename T, std::size_t N>
11826
      inline T axnb(const T a, const T x, const T b)
11827
0
      {
11828
         // a*x^n+b
11829
0
         return a * exprtk::details::numeric::fast_exp<T,N>::result(x) + b;
11830
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)
11831
11832
      template <typename T>
11833
      struct sf_base
11834
      {
11835
         typedef typename details::functor_t<T>::Type Type;
11836
         typedef typename details::functor_t<T> functor_t;
11837
         typedef typename functor_t::qfunc_t quaternary_functor_t;
11838
         typedef typename functor_t::tfunc_t trinary_functor_t;
11839
         typedef typename functor_t::bfunc_t binary_functor_t;
11840
         typedef typename functor_t::ufunc_t unary_functor_t;
11841
      };
11842
11843
      #define define_sfop3(NN, OP0, OP1)                 \
11844
      template <typename T>                              \
11845
      struct sf##NN##_op : public sf_base<T>             \
11846
      {                                                  \
11847
         typedef typename sf_base<T>::Type const Type;   \
11848
         static inline T process(Type x, Type y, Type z) \
11849
1.22k
         {                                               \
11850
1.22k
            return (OP0);                                \
11851
1.22k
         }                                               \
exprtk::details::sf00_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
3
         {                                               \
11850
3
            return (OP0);                                \
11851
3
         }                                               \
exprtk::details::sf01_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
23
         {                                               \
11850
23
            return (OP0);                                \
11851
23
         }                                               \
exprtk::details::sf02_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
15
         {                                               \
11850
15
            return (OP0);                                \
11851
15
         }                                               \
exprtk::details::sf03_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
16
         {                                               \
11850
16
            return (OP0);                                \
11851
16
         }                                               \
exprtk::details::sf04_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
13
         {                                               \
11850
13
            return (OP0);                                \
11851
13
         }                                               \
exprtk::details::sf05_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
4
         {                                               \
11850
4
            return (OP0);                                \
11851
4
         }                                               \
exprtk::details::sf06_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
11
         {                                               \
11850
11
            return (OP0);                                \
11851
11
         }                                               \
exprtk::details::sf07_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
53
         {                                               \
11850
53
            return (OP0);                                \
11851
53
         }                                               \
exprtk::details::sf08_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
40
         {                                               \
11850
40
            return (OP0);                                \
11851
40
         }                                               \
exprtk::details::sf09_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
53
         {                                               \
11850
53
            return (OP0);                                \
11851
53
         }                                               \
exprtk::details::sf10_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
52
         {                                               \
11850
52
            return (OP0);                                \
11851
52
         }                                               \
exprtk::details::sf11_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
21
         {                                               \
11850
21
            return (OP0);                                \
11851
21
         }                                               \
exprtk::details::sf12_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
21
         {                                               \
11850
21
            return (OP0);                                \
11851
21
         }                                               \
exprtk::details::sf13_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
1
         {                                               \
11850
1
            return (OP0);                                \
11851
1
         }                                               \
exprtk::details::sf14_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
22
         {                                               \
11850
22
            return (OP0);                                \
11851
22
         }                                               \
exprtk::details::sf15_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
16
         {                                               \
11850
16
            return (OP0);                                \
11851
16
         }                                               \
exprtk::details::sf16_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
2
         {                                               \
11850
2
            return (OP0);                                \
11851
2
         }                                               \
exprtk::details::sf17_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
15
         {                                               \
11850
15
            return (OP0);                                \
11851
15
         }                                               \
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
11849
8
         {                                               \
11850
8
            return (OP0);                                \
11851
8
         }                                               \
exprtk::details::sf20_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
28
         {                                               \
11850
28
            return (OP0);                                \
11851
28
         }                                               \
exprtk::details::sf21_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
22
         {                                               \
11850
22
            return (OP0);                                \
11851
22
         }                                               \
exprtk::details::sf22_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
19
         {                                               \
11850
19
            return (OP0);                                \
11851
19
         }                                               \
exprtk::details::sf23_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
21
         {                                               \
11850
21
            return (OP0);                                \
11851
21
         }                                               \
exprtk::details::sf24_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
5
         {                                               \
11850
5
            return (OP0);                                \
11851
5
         }                                               \
exprtk::details::sf25_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
20
         {                                               \
11850
20
            return (OP0);                                \
11851
20
         }                                               \
exprtk::details::sf26_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
36
         {                                               \
11850
36
            return (OP0);                                \
11851
36
         }                                               \
exprtk::details::sf27_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
28
         {                                               \
11850
28
            return (OP0);                                \
11851
28
         }                                               \
exprtk::details::sf28_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
47
         {                                               \
11850
47
            return (OP0);                                \
11851
47
         }                                               \
exprtk::details::sf29_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
1
         {                                               \
11850
1
            return (OP0);                                \
11851
1
         }                                               \
Unexecuted instantiation: exprtk::details::sf30_op<double>::process(double const&, double const&, double const&)
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&)
exprtk::details::sf45_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11849
1
         {                                               \
11850
1
            return (OP0);                                \
11851
1
         }                                               \
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
11849
3
         {                                               \
11850
3
            return (OP0);                                \
11851
3
         }                                               \
exprtk::details::sf01_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
23
         {                                               \
11850
23
            return (OP0);                                \
11851
23
         }                                               \
exprtk::details::sf02_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
15
         {                                               \
11850
15
            return (OP0);                                \
11851
15
         }                                               \
exprtk::details::sf03_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
16
         {                                               \
11850
16
            return (OP0);                                \
11851
16
         }                                               \
exprtk::details::sf04_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
13
         {                                               \
11850
13
            return (OP0);                                \
11851
13
         }                                               \
exprtk::details::sf05_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
3
         {                                               \
11850
3
            return (OP0);                                \
11851
3
         }                                               \
exprtk::details::sf06_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
11
         {                                               \
11850
11
            return (OP0);                                \
11851
11
         }                                               \
exprtk::details::sf07_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
53
         {                                               \
11850
53
            return (OP0);                                \
11851
53
         }                                               \
exprtk::details::sf08_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
39
         {                                               \
11850
39
            return (OP0);                                \
11851
39
         }                                               \
exprtk::details::sf09_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
53
         {                                               \
11850
53
            return (OP0);                                \
11851
53
         }                                               \
exprtk::details::sf10_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
50
         {                                               \
11850
50
            return (OP0);                                \
11851
50
         }                                               \
exprtk::details::sf11_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
20
         {                                               \
11850
20
            return (OP0);                                \
11851
20
         }                                               \
exprtk::details::sf12_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
21
         {                                               \
11850
21
            return (OP0);                                \
11851
21
         }                                               \
exprtk::details::sf13_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
1
         {                                               \
11850
1
            return (OP0);                                \
11851
1
         }                                               \
exprtk::details::sf14_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
22
         {                                               \
11850
22
            return (OP0);                                \
11851
22
         }                                               \
exprtk::details::sf15_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
16
         {                                               \
11850
16
            return (OP0);                                \
11851
16
         }                                               \
exprtk::details::sf16_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
2
         {                                               \
11850
2
            return (OP0);                                \
11851
2
         }                                               \
exprtk::details::sf17_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
15
         {                                               \
11850
15
            return (OP0);                                \
11851
15
         }                                               \
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
11849
8
         {                                               \
11850
8
            return (OP0);                                \
11851
8
         }                                               \
exprtk::details::sf20_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
28
         {                                               \
11850
28
            return (OP0);                                \
11851
28
         }                                               \
exprtk::details::sf21_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
22
         {                                               \
11850
22
            return (OP0);                                \
11851
22
         }                                               \
exprtk::details::sf22_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
19
         {                                               \
11850
19
            return (OP0);                                \
11851
19
         }                                               \
exprtk::details::sf23_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
21
         {                                               \
11850
21
            return (OP0);                                \
11851
21
         }                                               \
exprtk::details::sf24_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
3
         {                                               \
11850
3
            return (OP0);                                \
11851
3
         }                                               \
exprtk::details::sf25_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
18
         {                                               \
11850
18
            return (OP0);                                \
11851
18
         }                                               \
exprtk::details::sf26_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
35
         {                                               \
11850
35
            return (OP0);                                \
11851
35
         }                                               \
exprtk::details::sf27_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
25
         {                                               \
11850
25
            return (OP0);                                \
11851
25
         }                                               \
exprtk::details::sf28_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
47
         {                                               \
11850
47
            return (OP0);                                \
11851
47
         }                                               \
exprtk::details::sf29_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
1
         {                                               \
11850
1
            return (OP0);                                \
11851
1
         }                                               \
Unexecuted instantiation: exprtk::details::sf30_op<float>::process(float const&, float const&, float const&)
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&)
exprtk::details::sf45_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11849
1
         {                                               \
11850
1
            return (OP0);                                \
11851
1
         }                                               \
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&)
11852
         static inline std::string id()                  \
11853
419k
         {                                               \
11854
419k
            return (OP1);                                \
11855
419k
         }                                               \
exprtk::details::sf00_op<double>::id()
Line
Count
Source
11853
6.81k
         {                                               \
11854
6.81k
            return (OP1);                                \
11855
6.81k
         }                                               \
exprtk::details::sf01_op<double>::id()
Line
Count
Source
11853
6.60k
         {                                               \
11854
6.60k
            return (OP1);                                \
11855
6.60k
         }                                               \
exprtk::details::sf02_op<double>::id()
Line
Count
Source
11853
6.47k
         {                                               \
11854
6.47k
            return (OP1);                                \
11855
6.47k
         }                                               \
exprtk::details::sf03_op<double>::id()
Line
Count
Source
11853
6.45k
         {                                               \
11854
6.45k
            return (OP1);                                \
11855
6.45k
         }                                               \
exprtk::details::sf04_op<double>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf05_op<double>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf06_op<double>::id()
Line
Count
Source
11853
6.53k
         {                                               \
11854
6.53k
            return (OP1);                                \
11855
6.53k
         }                                               \
exprtk::details::sf07_op<double>::id()
Line
Count
Source
11853
6.50k
         {                                               \
11854
6.50k
            return (OP1);                                \
11855
6.50k
         }                                               \
exprtk::details::sf08_op<double>::id()
Line
Count
Source
11853
6.56k
         {                                               \
11854
6.56k
            return (OP1);                                \
11855
6.56k
         }                                               \
exprtk::details::sf09_op<double>::id()
Line
Count
Source
11853
7.02k
         {                                               \
11854
7.02k
            return (OP1);                                \
11855
7.02k
         }                                               \
exprtk::details::sf10_op<double>::id()
Line
Count
Source
11853
6.74k
         {                                               \
11854
6.74k
            return (OP1);                                \
11855
6.74k
         }                                               \
exprtk::details::sf11_op<double>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf12_op<double>::id()
Line
Count
Source
11853
7.58k
         {                                               \
11854
7.58k
            return (OP1);                                \
11855
7.58k
         }                                               \
exprtk::details::sf13_op<double>::id()
Line
Count
Source
11853
6.42k
         {                                               \
11854
6.42k
            return (OP1);                                \
11855
6.42k
         }                                               \
exprtk::details::sf14_op<double>::id()
Line
Count
Source
11853
6.71k
         {                                               \
11854
6.71k
            return (OP1);                                \
11855
6.71k
         }                                               \
exprtk::details::sf15_op<double>::id()
Line
Count
Source
11853
6.55k
         {                                               \
11854
6.55k
            return (OP1);                                \
11855
6.55k
         }                                               \
exprtk::details::sf16_op<double>::id()
Line
Count
Source
11853
6.48k
         {                                               \
11854
6.48k
            return (OP1);                                \
11855
6.48k
         }                                               \
exprtk::details::sf17_op<double>::id()
Line
Count
Source
11853
6.76k
         {                                               \
11854
6.76k
            return (OP1);                                \
11855
6.76k
         }                                               \
exprtk::details::sf18_op<double>::id()
Line
Count
Source
11853
6.42k
         {                                               \
11854
6.42k
            return (OP1);                                \
11855
6.42k
         }                                               \
exprtk::details::sf19_op<double>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf20_op<double>::id()
Line
Count
Source
11853
7.02k
         {                                               \
11854
7.02k
            return (OP1);                                \
11855
7.02k
         }                                               \
exprtk::details::sf21_op<double>::id()
Line
Count
Source
11853
6.46k
         {                                               \
11854
6.46k
            return (OP1);                                \
11855
6.46k
         }                                               \
exprtk::details::sf22_op<double>::id()
Line
Count
Source
11853
6.61k
         {                                               \
11854
6.61k
            return (OP1);                                \
11855
6.61k
         }                                               \
exprtk::details::sf23_op<double>::id()
Line
Count
Source
11853
6.48k
         {                                               \
11854
6.48k
            return (OP1);                                \
11855
6.48k
         }                                               \
exprtk::details::sf24_op<double>::id()
Line
Count
Source
11853
6.50k
         {                                               \
11854
6.50k
            return (OP1);                                \
11855
6.50k
         }                                               \
exprtk::details::sf25_op<double>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf26_op<double>::id()
Line
Count
Source
11853
6.72k
         {                                               \
11854
6.72k
            return (OP1);                                \
11855
6.72k
         }                                               \
exprtk::details::sf27_op<double>::id()
Line
Count
Source
11853
10.0k
         {                                               \
11854
10.0k
            return (OP1);                                \
11855
10.0k
         }                                               \
exprtk::details::sf28_op<double>::id()
Line
Count
Source
11853
14.3k
         {                                               \
11854
14.3k
            return (OP1);                                \
11855
14.3k
         }                                               \
exprtk::details::sf29_op<double>::id()
Line
Count
Source
11853
6.42k
         {                                               \
11854
6.42k
            return (OP1);                                \
11855
6.42k
         }                                               \
exprtk::details::sf30_op<double>::id()
Line
Count
Source
11853
6.42k
         {                                               \
11854
6.42k
            return (OP1);                                \
11855
6.42k
         }                                               \
exprtk::details::sf00_op<float>::id()
Line
Count
Source
11853
6.81k
         {                                               \
11854
6.81k
            return (OP1);                                \
11855
6.81k
         }                                               \
exprtk::details::sf01_op<float>::id()
Line
Count
Source
11853
6.60k
         {                                               \
11854
6.60k
            return (OP1);                                \
11855
6.60k
         }                                               \
exprtk::details::sf02_op<float>::id()
Line
Count
Source
11853
6.47k
         {                                               \
11854
6.47k
            return (OP1);                                \
11855
6.47k
         }                                               \
exprtk::details::sf03_op<float>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf04_op<float>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf05_op<float>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf06_op<float>::id()
Line
Count
Source
11853
6.53k
         {                                               \
11854
6.53k
            return (OP1);                                \
11855
6.53k
         }                                               \
exprtk::details::sf07_op<float>::id()
Line
Count
Source
11853
6.50k
         {                                               \
11854
6.50k
            return (OP1);                                \
11855
6.50k
         }                                               \
exprtk::details::sf08_op<float>::id()
Line
Count
Source
11853
6.56k
         {                                               \
11854
6.56k
            return (OP1);                                \
11855
6.56k
         }                                               \
exprtk::details::sf09_op<float>::id()
Line
Count
Source
11853
6.94k
         {                                               \
11854
6.94k
            return (OP1);                                \
11855
6.94k
         }                                               \
exprtk::details::sf10_op<float>::id()
Line
Count
Source
11853
6.73k
         {                                               \
11854
6.73k
            return (OP1);                                \
11855
6.73k
         }                                               \
exprtk::details::sf11_op<float>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf12_op<float>::id()
Line
Count
Source
11853
6.46k
         {                                               \
11854
6.46k
            return (OP1);                                \
11855
6.46k
         }                                               \
exprtk::details::sf13_op<float>::id()
Line
Count
Source
11853
6.42k
         {                                               \
11854
6.42k
            return (OP1);                                \
11855
6.42k
         }                                               \
exprtk::details::sf14_op<float>::id()
Line
Count
Source
11853
6.69k
         {                                               \
11854
6.69k
            return (OP1);                                \
11855
6.69k
         }                                               \
exprtk::details::sf15_op<float>::id()
Line
Count
Source
11853
6.55k
         {                                               \
11854
6.55k
            return (OP1);                                \
11855
6.55k
         }                                               \
exprtk::details::sf16_op<float>::id()
Line
Count
Source
11853
6.48k
         {                                               \
11854
6.48k
            return (OP1);                                \
11855
6.48k
         }                                               \
exprtk::details::sf17_op<float>::id()
Line
Count
Source
11853
6.76k
         {                                               \
11854
6.76k
            return (OP1);                                \
11855
6.76k
         }                                               \
exprtk::details::sf18_op<float>::id()
Line
Count
Source
11853
6.42k
         {                                               \
11854
6.42k
            return (OP1);                                \
11855
6.42k
         }                                               \
exprtk::details::sf19_op<float>::id()
Line
Count
Source
11853
6.44k
         {                                               \
11854
6.44k
            return (OP1);                                \
11855
6.44k
         }                                               \
exprtk::details::sf20_op<float>::id()
Line
Count
Source
11853
7.02k
         {                                               \
11854
7.02k
            return (OP1);                                \
11855
7.02k
         }                                               \
exprtk::details::sf21_op<float>::id()
Line
Count
Source
11853
6.46k
         {                                               \
11854
6.46k
            return (OP1);                                \
11855
6.46k
         }                                               \
exprtk::details::sf22_op<float>::id()
Line
Count
Source
11853
6.61k
         {                                               \
11854
6.61k
            return (OP1);                                \
11855
6.61k
         }                                               \
exprtk::details::sf23_op<float>::id()
Line
Count
Source
11853
6.48k
         {                                               \
11854
6.48k
            return (OP1);                                \
11855
6.48k
         }                                               \
exprtk::details::sf24_op<float>::id()
Line
Count
Source
11853
6.49k
         {                                               \
11854
6.49k
            return (OP1);                                \
11855
6.49k
         }                                               \
exprtk::details::sf25_op<float>::id()
Line
Count
Source
11853
6.43k
         {                                               \
11854
6.43k
            return (OP1);                                \
11855
6.43k
         }                                               \
exprtk::details::sf26_op<float>::id()
Line
Count
Source
11853
6.55k
         {                                               \
11854
6.55k
            return (OP1);                                \
11855
6.55k
         }                                               \
exprtk::details::sf27_op<float>::id()
Line
Count
Source
11853
6.45k
         {                                               \
11854
6.45k
            return (OP1);                                \
11855
6.45k
         }                                               \
exprtk::details::sf28_op<float>::id()
Line
Count
Source
11853
6.50k
         {                                               \
11854
6.50k
            return (OP1);                                \
11855
6.50k
         }                                               \
exprtk::details::sf29_op<float>::id()
Line
Count
Source
11853
6.42k
         {                                               \
11854
6.42k
            return (OP1);                                \
11855
6.42k
         }                                               \
exprtk::details::sf30_op<float>::id()
Line
Count
Source
11853
6.42k
         {                                               \
11854
6.42k
            return (OP1);                                \
11855
6.42k
         }                                               \
11856
      };                                                 \
11857
11858
      define_sfop3(00,(x + y) / z       ,"(t+t)/t")
11859
      define_sfop3(01,(x + y) * z       ,"(t+t)*t")
11860
      define_sfop3(02,(x + y) - z       ,"(t+t)-t")
11861
      define_sfop3(03,(x + y) + z       ,"(t+t)+t")
11862
      define_sfop3(04,(x - y) + z       ,"(t-t)+t")
11863
      define_sfop3(05,(x - y) / z       ,"(t-t)/t")
11864
      define_sfop3(06,(x - y) * z       ,"(t-t)*t")
11865
      define_sfop3(07,(x * y) + z       ,"(t*t)+t")
11866
      define_sfop3(08,(x * y) - z       ,"(t*t)-t")
11867
      define_sfop3(09,(x * y) / z       ,"(t*t)/t")
11868
      define_sfop3(10,(x * y) * z       ,"(t*t)*t")
11869
      define_sfop3(11,(x / y) + z       ,"(t/t)+t")
11870
      define_sfop3(12,(x / y) - z       ,"(t/t)-t")
11871
      define_sfop3(13,(x / y) / z       ,"(t/t)/t")
11872
      define_sfop3(14,(x / y) * z       ,"(t/t)*t")
11873
      define_sfop3(15,x / (y + z)       ,"t/(t+t)")
11874
      define_sfop3(16,x / (y - z)       ,"t/(t-t)")
11875
      define_sfop3(17,x / (y * z)       ,"t/(t*t)")
11876
      define_sfop3(18,x / (y / z)       ,"t/(t/t)")
11877
      define_sfop3(19,x * (y + z)       ,"t*(t+t)")
11878
      define_sfop3(20,x * (y - z)       ,"t*(t-t)")
11879
      define_sfop3(21,x * (y * z)       ,"t*(t*t)")
11880
      define_sfop3(22,x * (y / z)       ,"t*(t/t)")
11881
      define_sfop3(23,x - (y + z)       ,"t-(t+t)")
11882
      define_sfop3(24,x - (y - z)       ,"t-(t-t)")
11883
      define_sfop3(25,x - (y / z)       ,"t-(t/t)")
11884
      define_sfop3(26,x - (y * z)       ,"t-(t*t)")
11885
      define_sfop3(27,x + (y * z)       ,"t+(t*t)")
11886
      define_sfop3(28,x + (y / z)       ,"t+(t/t)")
11887
      define_sfop3(29,x + (y + z)       ,"t+(t+t)")
11888
      define_sfop3(30,x + (y - z)       ,"t+(t-t)")
11889
      define_sfop3(31,(axnb<T,2>(x,y,z)),"       ")
11890
      define_sfop3(32,(axnb<T,3>(x,y,z)),"       ")
11891
      define_sfop3(33,(axnb<T,4>(x,y,z)),"       ")
11892
      define_sfop3(34,(axnb<T,5>(x,y,z)),"       ")
11893
      define_sfop3(35,(axnb<T,6>(x,y,z)),"       ")
11894
      define_sfop3(36,(axnb<T,7>(x,y,z)),"       ")
11895
      define_sfop3(37,(axnb<T,8>(x,y,z)),"       ")
11896
      define_sfop3(38,(axnb<T,9>(x,y,z)),"       ")
11897
      define_sfop3(39,x * numeric::log(y)   + z,"")
11898
      define_sfop3(40,x * numeric::log(y)   - z,"")
11899
      define_sfop3(41,x * numeric::log10(y) + z,"")
11900
      define_sfop3(42,x * numeric::log10(y) - z,"")
11901
      define_sfop3(43,x * numeric::sin(y) + z  ,"")
11902
      define_sfop3(44,x * numeric::sin(y) - z  ,"")
11903
      define_sfop3(45,x * numeric::cos(y) + z  ,"")
11904
      define_sfop3(46,x * numeric::cos(y) - z  ,"")
11905
      define_sfop3(47,details::is_true(x) ? y : z,"")
11906
11907
      #define define_sfop4(NN, OP0, OP1)                         \
11908
      template <typename T>                                      \
11909
      struct sf##NN##_op : public sf_base<T>                     \
11910
      {                                                          \
11911
         typedef typename sf_base<T>::Type const Type;           \
11912
         static inline T process(Type x, Type y, Type z, Type w) \
11913
702
         {                                                       \
11914
702
            return (OP0);                                        \
11915
702
         }                                                       \
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
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
Unexecuted instantiation: exprtk::details::sf50_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf51_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sf52_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
6
         {                                                       \
11914
6
            return (OP0);                                        \
11915
6
         }                                                       \
exprtk::details::sf53_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
10
         {                                                       \
11914
10
            return (OP0);                                        \
11915
10
         }                                                       \
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
11913
8
         {                                                       \
11914
8
            return (OP0);                                        \
11915
8
         }                                                       \
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
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sf59_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf60_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
4
         {                                                       \
11914
4
            return (OP0);                                        \
11915
4
         }                                                       \
exprtk::details::sf61_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
40
         {                                                       \
11914
40
            return (OP0);                                        \
11915
40
         }                                                       \
exprtk::details::sf62_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
6
         {                                                       \
11914
6
            return (OP0);                                        \
11915
6
         }                                                       \
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
11913
8
         {                                                       \
11914
8
            return (OP0);                                        \
11915
8
         }                                                       \
exprtk::details::sf65_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
exprtk::details::sf66_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
exprtk::details::sf67_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
10
         {                                                       \
11914
10
            return (OP0);                                        \
11915
10
         }                                                       \
exprtk::details::sf68_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sf69_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
exprtk::details::sf70_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sf71_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
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
11913
13
         {                                                       \
11914
13
            return (OP0);                                        \
11915
13
         }                                                       \
exprtk::details::sf74_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
12
         {                                                       \
11914
12
            return (OP0);                                        \
11915
12
         }                                                       \
exprtk::details::sf75_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
9
         {                                                       \
11914
9
            return (OP0);                                        \
11915
9
         }                                                       \
exprtk::details::sf76_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
8
         {                                                       \
11914
8
            return (OP0);                                        \
11915
8
         }                                                       \
exprtk::details::sf77_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
6
         {                                                       \
11914
6
            return (OP0);                                        \
11915
6
         }                                                       \
exprtk::details::sf78_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
9
         {                                                       \
11914
9
            return (OP0);                                        \
11915
9
         }                                                       \
exprtk::details::sf79_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
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&)
exprtk::details::sf83_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
exprtk::details::sfext00_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
10
         {                                                       \
11914
10
            return (OP0);                                        \
11915
10
         }                                                       \
exprtk::details::sfext01_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sfext02_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
8
         {                                                       \
11914
8
            return (OP0);                                        \
11915
8
         }                                                       \
exprtk::details::sfext03_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sfext04_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
4
         {                                                       \
11914
4
            return (OP0);                                        \
11915
4
         }                                                       \
exprtk::details::sfext05_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sfext06_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
15
         {                                                       \
11914
15
            return (OP0);                                        \
11915
15
         }                                                       \
exprtk::details::sfext07_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
12
         {                                                       \
11914
12
            return (OP0);                                        \
11915
12
         }                                                       \
exprtk::details::sfext08_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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&)
exprtk::details::sfext11_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext12_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext13_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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&)
exprtk::details::sfext16_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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&)
exprtk::details::sfext19_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sfext20_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
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&)
exprtk::details::sfext24_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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
11913
19
         {                                                       \
11914
19
            return (OP0);                                        \
11915
19
         }                                                       \
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&)
exprtk::details::sfext30_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sfext31_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sfext32_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sfext33_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext34_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext35_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
9
         {                                                       \
11914
9
            return (OP0);                                        \
11915
9
         }                                                       \
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
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
exprtk::details::sfext40_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext41_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext42_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
13
         {                                                       \
11914
13
            return (OP0);                                        \
11915
13
         }                                                       \
exprtk::details::sfext43_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
4
         {                                                       \
11914
4
            return (OP0);                                        \
11915
4
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext44_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext45_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sfext46_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
4
         {                                                       \
11914
4
            return (OP0);                                        \
11915
4
         }                                                       \
exprtk::details::sfext47_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
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&)
exprtk::details::sfext50_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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&)
exprtk::details::sfext55_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
exprtk::details::sfext56_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext57_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext58_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
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
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
exprtk::details::sfext61_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11913
19
         {                                                       \
11914
19
            return (OP0);                                        \
11915
19
         }                                                       \
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
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
Unexecuted instantiation: exprtk::details::sf50_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf51_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sf52_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
6
         {                                                       \
11914
6
            return (OP0);                                        \
11915
6
         }                                                       \
exprtk::details::sf53_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
10
         {                                                       \
11914
10
            return (OP0);                                        \
11915
10
         }                                                       \
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
11913
8
         {                                                       \
11914
8
            return (OP0);                                        \
11915
8
         }                                                       \
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
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sf59_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf60_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
4
         {                                                       \
11914
4
            return (OP0);                                        \
11915
4
         }                                                       \
exprtk::details::sf61_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
39
         {                                                       \
11914
39
            return (OP0);                                        \
11915
39
         }                                                       \
exprtk::details::sf62_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
6
         {                                                       \
11914
6
            return (OP0);                                        \
11915
6
         }                                                       \
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
11913
8
         {                                                       \
11914
8
            return (OP0);                                        \
11915
8
         }                                                       \
exprtk::details::sf65_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
exprtk::details::sf66_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
exprtk::details::sf67_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
10
         {                                                       \
11914
10
            return (OP0);                                        \
11915
10
         }                                                       \
exprtk::details::sf68_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
6
         {                                                       \
11914
6
            return (OP0);                                        \
11915
6
         }                                                       \
exprtk::details::sf69_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
exprtk::details::sf70_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sf71_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
3
         {                                                       \
11914
3
            return (OP0);                                        \
11915
3
         }                                                       \
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
11913
13
         {                                                       \
11914
13
            return (OP0);                                        \
11915
13
         }                                                       \
exprtk::details::sf74_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
12
         {                                                       \
11914
12
            return (OP0);                                        \
11915
12
         }                                                       \
exprtk::details::sf75_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
9
         {                                                       \
11914
9
            return (OP0);                                        \
11915
9
         }                                                       \
exprtk::details::sf76_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sf77_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
6
         {                                                       \
11914
6
            return (OP0);                                        \
11915
6
         }                                                       \
exprtk::details::sf78_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
9
         {                                                       \
11914
9
            return (OP0);                                        \
11915
9
         }                                                       \
exprtk::details::sf79_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
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&)
exprtk::details::sf83_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
exprtk::details::sfext00_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
10
         {                                                       \
11914
10
            return (OP0);                                        \
11915
10
         }                                                       \
exprtk::details::sfext01_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sfext02_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
8
         {                                                       \
11914
8
            return (OP0);                                        \
11915
8
         }                                                       \
exprtk::details::sfext03_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sfext04_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
4
         {                                                       \
11914
4
            return (OP0);                                        \
11915
4
         }                                                       \
exprtk::details::sfext05_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
7
         {                                                       \
11914
7
            return (OP0);                                        \
11915
7
         }                                                       \
exprtk::details::sfext06_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
15
         {                                                       \
11914
15
            return (OP0);                                        \
11915
15
         }                                                       \
exprtk::details::sfext07_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
12
         {                                                       \
11914
12
            return (OP0);                                        \
11915
12
         }                                                       \
exprtk::details::sfext08_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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&)
exprtk::details::sfext11_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext12_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext13_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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&)
exprtk::details::sfext19_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sfext20_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
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&)
exprtk::details::sfext24_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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
11913
17
         {                                                       \
11914
17
            return (OP0);                                        \
11915
17
         }                                                       \
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&)
exprtk::details::sfext30_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
exprtk::details::sfext31_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sfext32_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sfext33_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext34_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext35_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
9
         {                                                       \
11914
9
            return (OP0);                                        \
11915
9
         }                                                       \
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
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
exprtk::details::sfext40_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext41_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext42_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
exprtk::details::sfext43_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
4
         {                                                       \
11914
4
            return (OP0);                                        \
11915
4
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext44_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext45_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
exprtk::details::sfext46_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
4
         {                                                       \
11914
4
            return (OP0);                                        \
11915
4
         }                                                       \
exprtk::details::sfext47_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
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&)
exprtk::details::sfext50_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
1
         {                                                       \
11914
1
            return (OP0);                                        \
11915
1
         }                                                       \
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&)
exprtk::details::sfext55_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
exprtk::details::sfext56_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext57_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext58_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
2
         {                                                       \
11914
2
            return (OP0);                                        \
11915
2
         }                                                       \
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
11913
5
         {                                                       \
11914
5
            return (OP0);                                        \
11915
5
         }                                                       \
exprtk::details::sfext61_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11913
19
         {                                                       \
11914
19
            return (OP0);                                        \
11915
19
         }                                                       \
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&)
11916
         static inline std::string id()                          \
11917
1.26M
         {                                                       \
11918
1.26M
            return (OP1);                                        \
11919
1.26M
         }                                                       \
exprtk::details::sf48_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf49_op<double>::id()
Line
Count
Source
11917
6.44k
         {                                                       \
11918
6.44k
            return (OP1);                                        \
11919
6.44k
         }                                                       \
exprtk::details::sf50_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf51_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf52_op<double>::id()
Line
Count
Source
11917
6.44k
         {                                                       \
11918
6.44k
            return (OP1);                                        \
11919
6.44k
         }                                                       \
exprtk::details::sf53_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf54_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf55_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf56_op<double>::id()
Line
Count
Source
11917
6.47k
         {                                                       \
11918
6.47k
            return (OP1);                                        \
11919
6.47k
         }                                                       \
exprtk::details::sf57_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sf58_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf59_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf60_op<double>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sf61_op<double>::id()
Line
Count
Source
11917
6.50k
         {                                                       \
11918
6.50k
            return (OP1);                                        \
11919
6.50k
         }                                                       \
exprtk::details::sf62_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf63_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf64_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf65_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf66_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf67_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sf68_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf69_op<double>::id()
Line
Count
Source
11917
6.46k
         {                                                       \
11918
6.46k
            return (OP1);                                        \
11919
6.46k
         }                                                       \
exprtk::details::sf70_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf71_op<double>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sf72_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf73_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf74_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sf75_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf76_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf77_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf78_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf79_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf80_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf81_op<double>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sf82_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf83_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext00_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sfext01_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext02_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext03_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext04_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext05_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext06_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext07_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext08_op<double>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sfext09_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext10_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext11_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext12_op<double>::id()
Line
Count
Source
11917
6.47k
         {                                                       \
11918
6.47k
            return (OP1);                                        \
11919
6.47k
         }                                                       \
exprtk::details::sfext13_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext14_op<double>::id()
Line
Count
Source
11917
6.60k
         {                                                       \
11918
6.60k
            return (OP1);                                        \
11919
6.60k
         }                                                       \
exprtk::details::sfext15_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext16_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext17_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext18_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext19_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext20_op<double>::id()
Line
Count
Source
11917
6.46k
         {                                                       \
11918
6.46k
            return (OP1);                                        \
11919
6.46k
         }                                                       \
exprtk::details::sfext21_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext22_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext23_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext24_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext25_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext26_op<double>::id()
Line
Count
Source
11917
6.46k
         {                                                       \
11918
6.46k
            return (OP1);                                        \
11919
6.46k
         }                                                       \
exprtk::details::sfext27_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext28_op<double>::id()
Line
Count
Source
11917
6.51k
         {                                                       \
11918
6.51k
            return (OP1);                                        \
11919
6.51k
         }                                                       \
exprtk::details::sfext29_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext30_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sfext31_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext32_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext33_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext34_op<double>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sfext35_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sfext36_op<double>::id()
Line
Count
Source
11917
13.0k
         {                                                       \
11918
13.0k
            return (OP1);                                        \
11919
13.0k
         }                                                       \
exprtk::details::sfext38_op<double>::id()
Line
Count
Source
11917
6.47k
         {                                                       \
11918
6.47k
            return (OP1);                                        \
11919
6.47k
         }                                                       \
exprtk::details::sfext39_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext40_op<double>::id()
Line
Count
Source
11917
6.51k
         {                                                       \
11918
6.51k
            return (OP1);                                        \
11919
6.51k
         }                                                       \
exprtk::details::sfext41_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext42_op<double>::id()
Line
Count
Source
11917
6.48k
         {                                                       \
11918
6.48k
            return (OP1);                                        \
11919
6.48k
         }                                                       \
exprtk::details::sfext43_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext44_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sfext45_op<double>::id()
Line
Count
Source
11917
6.44k
         {                                                       \
11918
6.44k
            return (OP1);                                        \
11919
6.44k
         }                                                       \
exprtk::details::sfext46_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext47_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext48_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext49_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext50_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext51_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext52_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext53_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext54_op<double>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sfext55_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sfext56_op<double>::id()
Line
Count
Source
11917
6.44k
         {                                                       \
11918
6.44k
            return (OP1);                                        \
11919
6.44k
         }                                                       \
exprtk::details::sfext57_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext58_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext59_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext60_op<double>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext61_op<double>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext37_op<double>::id()
exprtk::details::sf48_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf49_op<float>::id()
Line
Count
Source
11917
6.44k
         {                                                       \
11918
6.44k
            return (OP1);                                        \
11919
6.44k
         }                                                       \
exprtk::details::sf50_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf51_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf52_op<float>::id()
Line
Count
Source
11917
6.44k
         {                                                       \
11918
6.44k
            return (OP1);                                        \
11919
6.44k
         }                                                       \
exprtk::details::sf53_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf54_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf55_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf56_op<float>::id()
Line
Count
Source
11917
6.47k
         {                                                       \
11918
6.47k
            return (OP1);                                        \
11919
6.47k
         }                                                       \
exprtk::details::sf57_op<float>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sf58_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf59_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf60_op<float>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sf61_op<float>::id()
Line
Count
Source
11917
6.50k
         {                                                       \
11918
6.50k
            return (OP1);                                        \
11919
6.50k
         }                                                       \
exprtk::details::sf62_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf63_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf64_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf65_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf66_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf67_op<float>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sf68_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf69_op<float>::id()
Line
Count
Source
11917
6.46k
         {                                                       \
11918
6.46k
            return (OP1);                                        \
11919
6.46k
         }                                                       \
exprtk::details::sf70_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf71_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf72_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf73_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf74_op<float>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sf75_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf76_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf77_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf78_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf79_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf80_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf81_op<float>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sf82_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sf83_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext00_op<float>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sfext01_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext02_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext03_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext04_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext05_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext06_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext07_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext08_op<float>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sfext09_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext10_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext11_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext12_op<float>::id()
Line
Count
Source
11917
6.47k
         {                                                       \
11918
6.47k
            return (OP1);                                        \
11919
6.47k
         }                                                       \
exprtk::details::sfext13_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext14_op<float>::id()
Line
Count
Source
11917
6.60k
         {                                                       \
11918
6.60k
            return (OP1);                                        \
11919
6.60k
         }                                                       \
exprtk::details::sfext15_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext16_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext17_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext18_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext19_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext20_op<float>::id()
Line
Count
Source
11917
6.46k
         {                                                       \
11918
6.46k
            return (OP1);                                        \
11919
6.46k
         }                                                       \
exprtk::details::sfext21_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext22_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext23_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext24_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext25_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext26_op<float>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sfext27_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext28_op<float>::id()
Line
Count
Source
11917
6.51k
         {                                                       \
11918
6.51k
            return (OP1);                                        \
11919
6.51k
         }                                                       \
exprtk::details::sfext29_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext30_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext31_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext32_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext33_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext34_op<float>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sfext35_op<float>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sfext36_op<float>::id()
Line
Count
Source
11917
13.0k
         {                                                       \
11918
13.0k
            return (OP1);                                        \
11919
13.0k
         }                                                       \
exprtk::details::sfext38_op<float>::id()
Line
Count
Source
11917
6.47k
         {                                                       \
11918
6.47k
            return (OP1);                                        \
11919
6.47k
         }                                                       \
exprtk::details::sfext39_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext40_op<float>::id()
Line
Count
Source
11917
6.51k
         {                                                       \
11918
6.51k
            return (OP1);                                        \
11919
6.51k
         }                                                       \
exprtk::details::sfext41_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext42_op<float>::id()
Line
Count
Source
11917
6.46k
         {                                                       \
11918
6.46k
            return (OP1);                                        \
11919
6.46k
         }                                                       \
exprtk::details::sfext43_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext44_op<float>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
exprtk::details::sfext45_op<float>::id()
Line
Count
Source
11917
6.44k
         {                                                       \
11918
6.44k
            return (OP1);                                        \
11919
6.44k
         }                                                       \
exprtk::details::sfext46_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext47_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext48_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext49_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext50_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext51_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext52_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext53_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext54_op<float>::id()
Line
Count
Source
11917
6.45k
         {                                                       \
11918
6.45k
            return (OP1);                                        \
11919
6.45k
         }                                                       \
exprtk::details::sfext55_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext56_op<float>::id()
Line
Count
Source
11917
6.44k
         {                                                       \
11918
6.44k
            return (OP1);                                        \
11919
6.44k
         }                                                       \
exprtk::details::sfext57_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext58_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext59_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext60_op<float>::id()
Line
Count
Source
11917
6.42k
         {                                                       \
11918
6.42k
            return (OP1);                                        \
11919
6.42k
         }                                                       \
exprtk::details::sfext61_op<float>::id()
Line
Count
Source
11917
6.43k
         {                                                       \
11918
6.43k
            return (OP1);                                        \
11919
6.43k
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext37_op<float>::id()
11920
      };                                                         \
11921
11922
      define_sfop4(48,(x + ((y + z) / w)),"t+((t+t)/t)")
11923
      define_sfop4(49,(x + ((y + z) * w)),"t+((t+t)*t)")
11924
      define_sfop4(50,(x + ((y - z) / w)),"t+((t-t)/t)")
11925
      define_sfop4(51,(x + ((y - z) * w)),"t+((t-t)*t)")
11926
      define_sfop4(52,(x + ((y * z) / w)),"t+((t*t)/t)")
11927
      define_sfop4(53,(x + ((y * z) * w)),"t+((t*t)*t)")
11928
      define_sfop4(54,(x + ((y / z) + w)),"t+((t/t)+t)")
11929
      define_sfop4(55,(x + ((y / z) / w)),"t+((t/t)/t)")
11930
      define_sfop4(56,(x + ((y / z) * w)),"t+((t/t)*t)")
11931
      define_sfop4(57,(x - ((y + z) / w)),"t-((t+t)/t)")
11932
      define_sfop4(58,(x - ((y + z) * w)),"t-((t+t)*t)")
11933
      define_sfop4(59,(x - ((y - z) / w)),"t-((t-t)/t)")
11934
      define_sfop4(60,(x - ((y - z) * w)),"t-((t-t)*t)")
11935
      define_sfop4(61,(x - ((y * z) / w)),"t-((t*t)/t)")
11936
      define_sfop4(62,(x - ((y * z) * w)),"t-((t*t)*t)")
11937
      define_sfop4(63,(x - ((y / z) / w)),"t-((t/t)/t)")
11938
      define_sfop4(64,(x - ((y / z) * w)),"t-((t/t)*t)")
11939
      define_sfop4(65,(((x + y) * z) - w),"((t+t)*t)-t")
11940
      define_sfop4(66,(((x - y) * z) - w),"((t-t)*t)-t")
11941
      define_sfop4(67,(((x * y) * z) - w),"((t*t)*t)-t")
11942
      define_sfop4(68,(((x / y) * z) - w),"((t/t)*t)-t")
11943
      define_sfop4(69,(((x + y) / z) - w),"((t+t)/t)-t")
11944
      define_sfop4(70,(((x - y) / z) - w),"((t-t)/t)-t")
11945
      define_sfop4(71,(((x * y) / z) - w),"((t*t)/t)-t")
11946
      define_sfop4(72,(((x / y) / z) - w),"((t/t)/t)-t")
11947
      define_sfop4(73,((x * y) + (z * w)),"(t*t)+(t*t)")
11948
      define_sfop4(74,((x * y) - (z * w)),"(t*t)-(t*t)")
11949
      define_sfop4(75,((x * y) + (z / w)),"(t*t)+(t/t)")
11950
      define_sfop4(76,((x * y) - (z / w)),"(t*t)-(t/t)")
11951
      define_sfop4(77,((x / y) + (z / w)),"(t/t)+(t/t)")
11952
      define_sfop4(78,((x / y) - (z / w)),"(t/t)-(t/t)")
11953
      define_sfop4(79,((x / y) - (z * w)),"(t/t)-(t*t)")
11954
      define_sfop4(80,(x / (y + (z * w))),"t/(t+(t*t))")
11955
      define_sfop4(81,(x / (y - (z * w))),"t/(t-(t*t))")
11956
      define_sfop4(82,(x * (y + (z * w))),"t*(t+(t*t))")
11957
      define_sfop4(83,(x * (y - (z * w))),"t*(t-(t*t))")
11958
11959
      define_sfop4(84,(axn<T,2>(x,y) + axn<T,2>(z,w)),"")
11960
      define_sfop4(85,(axn<T,3>(x,y) + axn<T,3>(z,w)),"")
11961
      define_sfop4(86,(axn<T,4>(x,y) + axn<T,4>(z,w)),"")
11962
      define_sfop4(87,(axn<T,5>(x,y) + axn<T,5>(z,w)),"")
11963
      define_sfop4(88,(axn<T,6>(x,y) + axn<T,6>(z,w)),"")
11964
      define_sfop4(89,(axn<T,7>(x,y) + axn<T,7>(z,w)),"")
11965
      define_sfop4(90,(axn<T,8>(x,y) + axn<T,8>(z,w)),"")
11966
      define_sfop4(91,(axn<T,9>(x,y) + axn<T,9>(z,w)),"")
11967
      define_sfop4(92,((details::is_true(x) && details::is_true(y)) ? z : w),"")
11968
      define_sfop4(93,((details::is_true(x) || details::is_true(y)) ? z : w),"")
11969
      define_sfop4(94,((x <  y) ? z : w),"")
11970
      define_sfop4(95,((x <= y) ? z : w),"")
11971
      define_sfop4(96,((x >  y) ? z : w),"")
11972
      define_sfop4(97,((x >= y) ? z : w),"")
11973
      define_sfop4(98,(details::is_true(numeric::equal(x,y)) ? z : w),"")
11974
      define_sfop4(99,(x * numeric::sin(y) + z * numeric::cos(w)),"")
11975
11976
      define_sfop4(ext00,((x + y) - (z * w)),"(t+t)-(t*t)")
11977
      define_sfop4(ext01,((x + y) - (z / w)),"(t+t)-(t/t)")
11978
      define_sfop4(ext02,((x + y) + (z * w)),"(t+t)+(t*t)")
11979
      define_sfop4(ext03,((x + y) + (z / w)),"(t+t)+(t/t)")
11980
      define_sfop4(ext04,((x - y) + (z * w)),"(t-t)+(t*t)")
11981
      define_sfop4(ext05,((x - y) + (z / w)),"(t-t)+(t/t)")
11982
      define_sfop4(ext06,((x - y) - (z * w)),"(t-t)-(t*t)")
11983
      define_sfop4(ext07,((x - y) - (z / w)),"(t-t)-(t/t)")
11984
      define_sfop4(ext08,((x + y) - (z - w)),"(t+t)-(t-t)")
11985
      define_sfop4(ext09,((x + y) + (z - w)),"(t+t)+(t-t)")
11986
      define_sfop4(ext10,((x + y) + (z + w)),"(t+t)+(t+t)")
11987
      define_sfop4(ext11,((x + y) * (z - w)),"(t+t)*(t-t)")
11988
      define_sfop4(ext12,((x + y) / (z - w)),"(t+t)/(t-t)")
11989
      define_sfop4(ext13,((x - y) - (z + w)),"(t-t)-(t+t)")
11990
      define_sfop4(ext14,((x - y) + (z + w)),"(t-t)+(t+t)")
11991
      define_sfop4(ext15,((x - y) * (z + w)),"(t-t)*(t+t)")
11992
      define_sfop4(ext16,((x - y) / (z + w)),"(t-t)/(t+t)")
11993
      define_sfop4(ext17,((x * y) - (z + w)),"(t*t)-(t+t)")
11994
      define_sfop4(ext18,((x / y) - (z + w)),"(t/t)-(t+t)")
11995
      define_sfop4(ext19,((x * y) + (z + w)),"(t*t)+(t+t)")
11996
      define_sfop4(ext20,((x / y) + (z + w)),"(t/t)+(t+t)")
11997
      define_sfop4(ext21,((x * y) + (z - w)),"(t*t)+(t-t)")
11998
      define_sfop4(ext22,((x / y) + (z - w)),"(t/t)+(t-t)")
11999
      define_sfop4(ext23,((x * y) - (z - w)),"(t*t)-(t-t)")
12000
      define_sfop4(ext24,((x / y) - (z - w)),"(t/t)-(t-t)")
12001
      define_sfop4(ext25,((x + y) * (z * w)),"(t+t)*(t*t)")
12002
      define_sfop4(ext26,((x + y) * (z / w)),"(t+t)*(t/t)")
12003
      define_sfop4(ext27,((x + y) / (z * w)),"(t+t)/(t*t)")
12004
      define_sfop4(ext28,((x + y) / (z / w)),"(t+t)/(t/t)")
12005
      define_sfop4(ext29,((x - y) / (z * w)),"(t-t)/(t*t)")
12006
      define_sfop4(ext30,((x - y) / (z / w)),"(t-t)/(t/t)")
12007
      define_sfop4(ext31,((x - y) * (z * w)),"(t-t)*(t*t)")
12008
      define_sfop4(ext32,((x - y) * (z / w)),"(t-t)*(t/t)")
12009
      define_sfop4(ext33,((x * y) * (z + w)),"(t*t)*(t+t)")
12010
      define_sfop4(ext34,((x / y) * (z + w)),"(t/t)*(t+t)")
12011
      define_sfop4(ext35,((x * y) / (z + w)),"(t*t)/(t+t)")
12012
      define_sfop4(ext36,((x / y) / (z + w)),"(t/t)/(t+t)")
12013
      define_sfop4(ext37,((x * y) / (z - w)),"(t*t)/(t-t)")
12014
      define_sfop4(ext38,((x / y) / (z - w)),"(t/t)/(t-t)")
12015
      define_sfop4(ext39,((x * y) * (z - w)),"(t*t)*(t-t)")
12016
      define_sfop4(ext40,((x * y) / (z * w)),"(t*t)/(t*t)")
12017
      define_sfop4(ext41,((x / y) * (z / w)),"(t/t)*(t/t)")
12018
      define_sfop4(ext42,((x / y) * (z - w)),"(t/t)*(t-t)")
12019
      define_sfop4(ext43,((x * y) * (z * w)),"(t*t)*(t*t)")
12020
      define_sfop4(ext44,(x + (y * (z / w))),"t+(t*(t/t))")
12021
      define_sfop4(ext45,(x - (y * (z / w))),"t-(t*(t/t))")
12022
      define_sfop4(ext46,(x + (y / (z * w))),"t+(t/(t*t))")
12023
      define_sfop4(ext47,(x - (y / (z * w))),"t-(t/(t*t))")
12024
      define_sfop4(ext48,(((x - y) - z) * w),"((t-t)-t)*t")
12025
      define_sfop4(ext49,(((x - y) - z) / w),"((t-t)-t)/t")
12026
      define_sfop4(ext50,(((x - y) + z) * w),"((t-t)+t)*t")
12027
      define_sfop4(ext51,(((x - y) + z) / w),"((t-t)+t)/t")
12028
      define_sfop4(ext52,((x + (y - z)) * w),"(t+(t-t))*t")
12029
      define_sfop4(ext53,((x + (y - z)) / w),"(t+(t-t))/t")
12030
      define_sfop4(ext54,((x + y) / (z + w)),"(t+t)/(t+t)")
12031
      define_sfop4(ext55,((x - y) / (z - w)),"(t-t)/(t-t)")
12032
      define_sfop4(ext56,((x + y) * (z + w)),"(t+t)*(t+t)")
12033
      define_sfop4(ext57,((x - y) * (z - w)),"(t-t)*(t-t)")
12034
      define_sfop4(ext58,((x - y) + (z - w)),"(t-t)+(t-t)")
12035
      define_sfop4(ext59,((x - y) - (z - w)),"(t-t)-(t-t)")
12036
      define_sfop4(ext60,((x / y) + (z * w)),"(t/t)+(t*t)")
12037
      define_sfop4(ext61,(((x * y) * z) / w),"((t*t)*t)/t")
12038
12039
      #undef define_sfop3
12040
      #undef define_sfop4
12041
12042
      template <typename T, typename SpecialFunction>
12043
      class sf3_node exprtk_final : public trinary_node<T>
12044
      {
12045
      public:
12046
12047
         typedef expression_node<T>* expression_ptr;
12048
12049
         sf3_node(const operator_type& opr,
12050
                  expression_ptr branch0,
12051
                  expression_ptr branch1,
12052
                  expression_ptr branch2)
12053
202
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
202
         {}
Unexecuted instantiation: 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>*)
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>*)
Unexecuted instantiation: 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>*)
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>*)
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>*)
Line
Count
Source
12053
49
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
49
         {}
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>*)
Line
Count
Source
12053
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
1
         {}
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>*)
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>*)
Line
Count
Source
12053
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
1
         {}
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>*)
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>*)
Line
Count
Source
12053
48
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
48
         {}
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>*)
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>*)
Line
Count
Source
12053
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
1
         {}
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>*)
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>*)
Line
Count
Source
12053
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
1
         {}
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>*)
Unexecuted instantiation: 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>*)
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>*)
Unexecuted instantiation: 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>*)
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>*)
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>*)
Line
Count
Source
12053
49
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
49
         {}
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>*)
Line
Count
Source
12053
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
1
         {}
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>*)
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>*)
Line
Count
Source
12053
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
1
         {}
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>*)
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>*)
Line
Count
Source
12053
48
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
48
         {}
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>*)
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>*)
Line
Count
Source
12053
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
1
         {}
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>*)
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>*)
Line
Count
Source
12053
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12054
1
         {}
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>*)
12055
12056
         inline T value() const exprtk_override
12057
8
         {
12058
8
            const T x = trinary_node<T>::branch_[0].first->value();
12059
8
            const T y = trinary_node<T>::branch_[1].first->value();
12060
8
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
8
            return SpecialFunction::process(x, y, z);
12063
8
         }
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf00_op<double> >::value() const
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
exprtk::details::sf3_node<double, exprtk::details::sf10_op<double> >::value() const
Line
Count
Source
12057
1
         {
12058
1
            const T x = trinary_node<T>::branch_[0].first->value();
12059
1
            const T y = trinary_node<T>::branch_[1].first->value();
12060
1
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
1
            return SpecialFunction::process(x, y, z);
12063
1
         }
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
exprtk::details::sf3_node<double, exprtk::details::sf13_op<double> >::value() const
Line
Count
Source
12057
1
         {
12058
1
            const T x = trinary_node<T>::branch_[0].first->value();
12059
1
            const T y = trinary_node<T>::branch_[1].first->value();
12060
1
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
1
            return SpecialFunction::process(x, y, z);
12063
1
         }
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
exprtk::details::sf3_node<double, exprtk::details::sf20_op<double> >::value() const
Line
Count
Source
12057
1
         {
12058
1
            const T x = trinary_node<T>::branch_[0].first->value();
12059
1
            const T y = trinary_node<T>::branch_[1].first->value();
12060
1
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
1
            return SpecialFunction::process(x, y, z);
12063
1
         }
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
exprtk::details::sf3_node<double, exprtk::details::sf45_op<double> >::value() const
Line
Count
Source
12057
1
         {
12058
1
            const T x = trinary_node<T>::branch_[0].first->value();
12059
1
            const T y = trinary_node<T>::branch_[1].first->value();
12060
1
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
1
            return SpecialFunction::process(x, y, z);
12063
1
         }
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
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf00_op<float> >::value() const
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
exprtk::details::sf3_node<float, exprtk::details::sf10_op<float> >::value() const
Line
Count
Source
12057
1
         {
12058
1
            const T x = trinary_node<T>::branch_[0].first->value();
12059
1
            const T y = trinary_node<T>::branch_[1].first->value();
12060
1
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
1
            return SpecialFunction::process(x, y, z);
12063
1
         }
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
exprtk::details::sf3_node<float, exprtk::details::sf13_op<float> >::value() const
Line
Count
Source
12057
1
         {
12058
1
            const T x = trinary_node<T>::branch_[0].first->value();
12059
1
            const T y = trinary_node<T>::branch_[1].first->value();
12060
1
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
1
            return SpecialFunction::process(x, y, z);
12063
1
         }
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
exprtk::details::sf3_node<float, exprtk::details::sf20_op<float> >::value() const
Line
Count
Source
12057
1
         {
12058
1
            const T x = trinary_node<T>::branch_[0].first->value();
12059
1
            const T y = trinary_node<T>::branch_[1].first->value();
12060
1
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
1
            return SpecialFunction::process(x, y, z);
12063
1
         }
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
exprtk::details::sf3_node<float, exprtk::details::sf45_op<float> >::value() const
Line
Count
Source
12057
1
         {
12058
1
            const T x = trinary_node<T>::branch_[0].first->value();
12059
1
            const T y = trinary_node<T>::branch_[1].first->value();
12060
1
            const T z = trinary_node<T>::branch_[2].first->value();
12061
12062
1
            return SpecialFunction::process(x, y, z);
12063
1
         }
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
12064
      };
12065
12066
      template <typename T, typename SpecialFunction>
12067
      class sf4_node exprtk_final : public quaternary_node<T>
12068
      {
12069
      public:
12070
12071
         typedef expression_node<T>* expression_ptr;
12072
12073
         sf4_node(const operator_type& opr,
12074
                  expression_ptr branch0,
12075
                  expression_ptr branch1,
12076
                  expression_ptr branch2,
12077
                  expression_ptr branch3)
12078
0
         : quaternary_node<T>(opr, branch0, branch1, branch2, branch3)
12079
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>*)
12080
12081
         inline T value() const exprtk_override
12082
0
         {
12083
0
            const T x = quaternary_node<T>::branch_[0].first->value();
12084
0
            const T y = quaternary_node<T>::branch_[1].first->value();
12085
0
            const T z = quaternary_node<T>::branch_[2].first->value();
12086
0
            const T w = quaternary_node<T>::branch_[3].first->value();
12087
12088
0
            return SpecialFunction::process(x, y, z, w);
12089
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
12090
      };
12091
12092
      template <typename T, typename SpecialFunction>
12093
      class sf3_var_node exprtk_final : public expression_node<T>
12094
      {
12095
      public:
12096
12097
         typedef expression_node<T>* expression_ptr;
12098
12099
         sf3_var_node(const T& v0, const T& v1, const T& v2)
12100
0
         : v0_(v0)
12101
0
         , v1_(v1)
12102
0
         , v2_(v2)
12103
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&)
12104
12105
         inline T value() const exprtk_override
12106
0
         {
12107
0
            return SpecialFunction::process(v0_, v1_, v2_);
12108
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
12109
12110
         inline typename expression_node<T>::node_type type() const exprtk_override
12111
0
         {
12112
0
            return expression_node<T>::e_trinary;
12113
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
12114
12115
      private:
12116
12117
         sf3_var_node(const sf3_var_node<T,SpecialFunction>&) exprtk_delete;
12118
         sf3_var_node<T,SpecialFunction>& operator=(const sf3_var_node<T,SpecialFunction>&) exprtk_delete;
12119
12120
         const T& v0_;
12121
         const T& v1_;
12122
         const T& v2_;
12123
      };
12124
12125
      template <typename T, typename SpecialFunction>
12126
      class sf4_var_node exprtk_final : public expression_node<T>
12127
      {
12128
      public:
12129
12130
         typedef expression_node<T>* expression_ptr;
12131
12132
         sf4_var_node(const T& v0, const T& v1, const T& v2, const T& v3)
12133
0
         : v0_(v0)
12134
0
         , v1_(v1)
12135
0
         , v2_(v2)
12136
0
         , v3_(v3)
12137
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&)
12138
12139
         inline T value() const exprtk_override
12140
0
         {
12141
0
            return SpecialFunction::process(v0_, v1_, v2_, v3_);
12142
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
12143
12144
         inline typename expression_node<T>::node_type type() const exprtk_override
12145
0
         {
12146
0
            return expression_node<T>::e_trinary;
12147
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
12148
12149
      private:
12150
12151
         sf4_var_node(const sf4_var_node<T,SpecialFunction>&) exprtk_delete;
12152
         sf4_var_node<T,SpecialFunction>& operator=(const sf4_var_node<T,SpecialFunction>&) exprtk_delete;
12153
12154
         const T& v0_;
12155
         const T& v1_;
12156
         const T& v2_;
12157
         const T& v3_;
12158
      };
12159
12160
      template <typename T, typename VarArgFunction>
12161
      class vararg_node exprtk_final : public expression_node<T>
12162
      {
12163
      public:
12164
12165
         typedef expression_node<T>* expression_ptr;
12166
         typedef std::pair<expression_ptr,bool> branch_t;
12167
12168
         template <typename Allocator,
12169
                   template <typename, typename> class Sequence>
12170
         explicit vararg_node(const Sequence<expression_ptr,Allocator>& arg_list)
12171
65
         : initialised_(false)
12172
65
         {
12173
65
            arg_list_.resize(arg_list.size());
12174
12175
551
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12176
486
            {
12177
486
               if (arg_list[i] && arg_list[i]->valid())
12178
486
               {
12179
486
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12180
486
               }
12181
0
               else
12182
0
               {
12183
0
                  arg_list_.clear();
12184
0
                  return;
12185
0
               }
12186
486
            }
12187
12188
65
            initialised_ = (arg_list_.size() == arg_list.size());
12189
65
            assert(valid());
12190
65
         }
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&)
Line
Count
Source
12171
9
         : initialised_(false)
12172
9
         {
12173
9
            arg_list_.resize(arg_list.size());
12174
12175
27
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12176
18
            {
12177
18
               if (arg_list[i] && arg_list[i]->valid())
12178
18
               {
12179
18
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12180
18
               }
12181
0
               else
12182
0
               {
12183
0
                  arg_list_.clear();
12184
0
                  return;
12185
0
               }
12186
18
            }
12187
12188
9
            initialised_ = (arg_list_.size() == arg_list.size());
12189
9
            assert(valid());
12190
9
         }
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&)
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&)
Line
Count
Source
12171
1
         : initialised_(false)
12172
1
         {
12173
1
            arg_list_.resize(arg_list.size());
12174
12175
2
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12176
1
            {
12177
1
               if (arg_list[i] && arg_list[i]->valid())
12178
1
               {
12179
1
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12180
1
               }
12181
0
               else
12182
0
               {
12183
0
                  arg_list_.clear();
12184
0
                  return;
12185
0
               }
12186
1
            }
12187
12188
1
            initialised_ = (arg_list_.size() == arg_list.size());
12189
1
            assert(valid());
12190
1
         }
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
12171
23
         : initialised_(false)
12172
23
         {
12173
23
            arg_list_.resize(arg_list.size());
12174
12175
251
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12176
228
            {
12177
228
               if (arg_list[i] && arg_list[i]->valid())
12178
228
               {
12179
228
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12180
228
               }
12181
0
               else
12182
0
               {
12183
0
                  arg_list_.clear();
12184
0
                  return;
12185
0
               }
12186
228
            }
12187
12188
23
            initialised_ = (arg_list_.size() == arg_list.size());
12189
23
            assert(valid());
12190
23
         }
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&)
Line
Count
Source
12171
9
         : initialised_(false)
12172
9
         {
12173
9
            arg_list_.resize(arg_list.size());
12174
12175
27
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12176
18
            {
12177
18
               if (arg_list[i] && arg_list[i]->valid())
12178
18
               {
12179
18
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12180
18
               }
12181
0
               else
12182
0
               {
12183
0
                  arg_list_.clear();
12184
0
                  return;
12185
0
               }
12186
18
            }
12187
12188
9
            initialised_ = (arg_list_.size() == arg_list.size());
12189
9
            assert(valid());
12190
9
         }
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&)
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&)
Line
Count
Source
12171
1
         : initialised_(false)
12172
1
         {
12173
1
            arg_list_.resize(arg_list.size());
12174
12175
2
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12176
1
            {
12177
1
               if (arg_list[i] && arg_list[i]->valid())
12178
1
               {
12179
1
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12180
1
               }
12181
0
               else
12182
0
               {
12183
0
                  arg_list_.clear();
12184
0
                  return;
12185
0
               }
12186
1
            }
12187
12188
1
            initialised_ = (arg_list_.size() == arg_list.size());
12189
1
            assert(valid());
12190
1
         }
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
12171
22
         : initialised_(false)
12172
22
         {
12173
22
            arg_list_.resize(arg_list.size());
12174
12175
242
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12176
220
            {
12177
220
               if (arg_list[i] && arg_list[i]->valid())
12178
220
               {
12179
220
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12180
220
               }
12181
0
               else
12182
0
               {
12183
0
                  arg_list_.clear();
12184
0
                  return;
12185
0
               }
12186
220
            }
12187
12188
22
            initialised_ = (arg_list_.size() == arg_list.size());
12189
22
            assert(valid());
12190
22
         }
12191
12192
         inline T value() const exprtk_override
12193
37
         {
12194
37
            return VarArgFunction::process(arg_list_);
12195
37
         }
exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::value() const
Line
Count
Source
12193
8
         {
12194
8
            return VarArgFunction::process(arg_list_);
12195
8
         }
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
exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::value() const
Line
Count
Source
12193
1
         {
12194
1
            return VarArgFunction::process(arg_list_);
12195
1
         }
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::value() const
Line
Count
Source
12193
10
         {
12194
10
            return VarArgFunction::process(arg_list_);
12195
10
         }
exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::value() const
Line
Count
Source
12193
8
         {
12194
8
            return VarArgFunction::process(arg_list_);
12195
8
         }
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
exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::value() const
Line
Count
Source
12193
1
         {
12194
1
            return VarArgFunction::process(arg_list_);
12195
1
         }
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::value() const
Line
Count
Source
12193
9
         {
12194
9
            return VarArgFunction::process(arg_list_);
12195
9
         }
12196
12197
         inline typename expression_node<T>::node_type type() const exprtk_override
12198
1.00k
         {
12199
1.00k
            return expression_node<T>::e_vararg;
12200
1.00k
         }
exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::type() const
Line
Count
Source
12198
144
         {
12199
144
            return expression_node<T>::e_vararg;
12200
144
         }
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
exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::type() const
Line
Count
Source
12198
2
         {
12199
2
            return expression_node<T>::e_vararg;
12200
2
         }
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::type() const
Line
Count
Source
12198
358
         {
12199
358
            return expression_node<T>::e_vararg;
12200
358
         }
exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::type() const
Line
Count
Source
12198
144
         {
12199
144
            return expression_node<T>::e_vararg;
12200
144
         }
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
exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::type() const
Line
Count
Source
12198
2
         {
12199
2
            return expression_node<T>::e_vararg;
12200
2
         }
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::type() const
Line
Count
Source
12198
356
         {
12199
356
            return expression_node<T>::e_vararg;
12200
356
         }
12201
12202
         inline bool valid() const exprtk_override
12203
426
         {
12204
426
            return initialised_;
12205
426
         }
exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::valid() const
Line
Count
Source
12203
167
         {
12204
167
            return initialised_;
12205
167
         }
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
exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::valid() const
Line
Count
Source
12203
1
         {
12204
1
            return initialised_;
12205
1
         }
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::valid() const
Line
Count
Source
12203
46
         {
12204
46
            return initialised_;
12205
46
         }
exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::valid() const
Line
Count
Source
12203
167
         {
12204
167
            return initialised_;
12205
167
         }
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
exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::valid() const
Line
Count
Source
12203
1
         {
12204
1
            return initialised_;
12205
1
         }
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::valid() const
Line
Count
Source
12203
44
         {
12204
44
            return initialised_;
12205
44
         }
12206
12207
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
12208
65
         {
12209
65
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12210
65
         }
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>**> >&)
Line
Count
Source
12208
9
         {
12209
9
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12210
9
         }
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>**> >&)
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>**> >&)
Line
Count
Source
12208
1
         {
12209
1
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12210
1
         }
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
12208
23
         {
12209
23
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12210
23
         }
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>**> >&)
Line
Count
Source
12208
9
         {
12209
9
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12210
9
         }
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>**> >&)
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>**> >&)
Line
Count
Source
12208
1
         {
12209
1
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12210
1
         }
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
12208
22
         {
12209
22
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12210
22
         }
12211
12212
         std::size_t node_depth() const exprtk_override
12213
107
         {
12214
107
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12215
107
         }
exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::node_depth() const
Line
Count
Source
12213
18
         {
12214
18
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12215
18
         }
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
exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::node_depth() const
Line
Count
Source
12213
1
         {
12214
1
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12215
1
         }
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::node_depth() const
Line
Count
Source
12213
35
         {
12214
35
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12215
35
         }
exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::node_depth() const
Line
Count
Source
12213
18
         {
12214
18
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12215
18
         }
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
exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::node_depth() const
Line
Count
Source
12213
1
         {
12214
1
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12215
1
         }
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::node_depth() const
Line
Count
Source
12213
34
         {
12214
34
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12215
34
         }
12216
12217
         std::size_t size() const
12218
         {
12219
            return arg_list_.size();
12220
         }
12221
12222
         expression_ptr operator[](const std::size_t& index) const
12223
         {
12224
            return arg_list_[index].first;
12225
         }
12226
12227
      private:
12228
12229
         std::vector<branch_t> arg_list_;
12230
         bool initialised_;
12231
      };
12232
12233
      template <typename T, typename VarArgFunction>
12234
      class vararg_varnode exprtk_final : public expression_node<T>
12235
      {
12236
      public:
12237
12238
         typedef expression_node<T>* expression_ptr;
12239
12240
         template <typename Allocator,
12241
                   template <typename, typename> class Sequence>
12242
         explicit vararg_varnode(const Sequence<expression_ptr,Allocator>& arg_list)
12243
52
         : initialised_(false)
12244
52
         {
12245
52
            arg_list_.resize(arg_list.size());
12246
12247
154
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12248
102
            {
12249
102
               if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i]))
12250
102
               {
12251
102
                  variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]);
12252
102
                  arg_list_[i] = (&var_node_ptr->ref());
12253
102
               }
12254
0
               else
12255
0
               {
12256
0
                  arg_list_.clear();
12257
0
                  return;
12258
0
               }
12259
102
            }
12260
12261
52
            initialised_ = (arg_list.size() == arg_list_.size());
12262
52
            assert(valid());
12263
52
         }
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&)
Line
Count
Source
12243
25
         : initialised_(false)
12244
25
         {
12245
25
            arg_list_.resize(arg_list.size());
12246
12247
75
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12248
50
            {
12249
50
               if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i]))
12250
50
               {
12251
50
                  variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]);
12252
50
                  arg_list_[i] = (&var_node_ptr->ref());
12253
50
               }
12254
0
               else
12255
0
               {
12256
0
                  arg_list_.clear();
12257
0
                  return;
12258
0
               }
12259
50
            }
12260
12261
25
            initialised_ = (arg_list.size() == arg_list_.size());
12262
25
            assert(valid());
12263
25
         }
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&)
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&)
Line
Count
Source
12243
1
         : initialised_(false)
12244
1
         {
12245
1
            arg_list_.resize(arg_list.size());
12246
12247
2
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12248
1
            {
12249
1
               if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i]))
12250
1
               {
12251
1
                  variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]);
12252
1
                  arg_list_[i] = (&var_node_ptr->ref());
12253
1
               }
12254
0
               else
12255
0
               {
12256
0
                  arg_list_.clear();
12257
0
                  return;
12258
0
               }
12259
1
            }
12260
12261
1
            initialised_ = (arg_list.size() == arg_list_.size());
12262
1
            assert(valid());
12263
1
         }
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&)
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&)
Line
Count
Source
12243
25
         : initialised_(false)
12244
25
         {
12245
25
            arg_list_.resize(arg_list.size());
12246
12247
75
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12248
50
            {
12249
50
               if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i]))
12250
50
               {
12251
50
                  variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]);
12252
50
                  arg_list_[i] = (&var_node_ptr->ref());
12253
50
               }
12254
0
               else
12255
0
               {
12256
0
                  arg_list_.clear();
12257
0
                  return;
12258
0
               }
12259
50
            }
12260
12261
25
            initialised_ = (arg_list.size() == arg_list_.size());
12262
25
            assert(valid());
12263
25
         }
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&)
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&)
Line
Count
Source
12243
1
         : initialised_(false)
12244
1
         {
12245
1
            arg_list_.resize(arg_list.size());
12246
12247
2
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12248
1
            {
12249
1
               if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i]))
12250
1
               {
12251
1
                  variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]);
12252
1
                  arg_list_[i] = (&var_node_ptr->ref());
12253
1
               }
12254
0
               else
12255
0
               {
12256
0
                  arg_list_.clear();
12257
0
                  return;
12258
0
               }
12259
1
            }
12260
12261
1
            initialised_ = (arg_list.size() == arg_list_.size());
12262
1
            assert(valid());
12263
1
         }
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&)
12264
12265
         inline T value() const exprtk_override
12266
2
         {
12267
2
            return VarArgFunction::process(arg_list_);
12268
2
         }
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
exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::value() const
Line
Count
Source
12266
1
         {
12267
1
            return VarArgFunction::process(arg_list_);
12268
1
         }
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
exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::value() const
Line
Count
Source
12266
1
         {
12267
1
            return VarArgFunction::process(arg_list_);
12268
1
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::value() const
12269
12270
         inline typename expression_node<T>::node_type type() const exprtk_override
12271
808
         {
12272
808
            return expression_node<T>::e_vararg;
12273
808
         }
exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::type() const
Line
Count
Source
12271
400
         {
12272
400
            return expression_node<T>::e_vararg;
12273
400
         }
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
exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::type() const
Line
Count
Source
12271
4
         {
12272
4
            return expression_node<T>::e_vararg;
12273
4
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::type() const
exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::type() const
Line
Count
Source
12271
400
         {
12272
400
            return expression_node<T>::e_vararg;
12273
400
         }
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
exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::type() const
Line
Count
Source
12271
4
         {
12272
4
            return expression_node<T>::e_vararg;
12273
4
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::type() const
12274
12275
         inline bool valid() const exprtk_override
12276
602
         {
12277
602
            return initialised_;
12278
602
         }
exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::valid() const
Line
Count
Source
12276
300
         {
12277
300
            return initialised_;
12278
300
         }
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
exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::valid() const
Line
Count
Source
12276
1
         {
12277
1
            return initialised_;
12278
1
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::valid() const
exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::valid() const
Line
Count
Source
12276
300
         {
12277
300
            return initialised_;
12278
300
         }
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
exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::valid() const
Line
Count
Source
12276
1
         {
12277
1
            return initialised_;
12278
1
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::valid() const
12279
12280
      private:
12281
12282
         std::vector<const T*> arg_list_;
12283
         bool initialised_;
12284
      };
12285
12286
      template <typename T, typename VecFunction>
12287
      class vectorize_node exprtk_final : public expression_node<T>
12288
      {
12289
      public:
12290
12291
         typedef expression_node<T>* expression_ptr;
12292
         typedef std::pair<expression_ptr,bool> branch_t;
12293
12294
         explicit vectorize_node(const expression_ptr v)
12295
0
         : ivec_ptr_(0)
12296
0
         {
12297
0
            construct_branch_pair(v_, v);
12298
12299
0
            if (is_ivector_node(v_.first))
12300
0
            {
12301
0
               ivec_ptr_ = dynamic_cast<vector_interface<T>*>(v_.first);
12302
0
            }
12303
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>*)
12304
12305
         inline T value() const exprtk_override
12306
0
         {
12307
0
            v_.first->value();
12308
0
            return VecFunction::process(ivec_ptr_);
12309
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
12310
12311
         inline typename expression_node<T>::node_type type() const exprtk_override
12312
0
         {
12313
0
            return expression_node<T>::e_vecfunc;
12314
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
12315
12316
         inline bool valid() const exprtk_override
12317
0
         {
12318
0
            return ivec_ptr_ && v_.first && v_.first->valid();
12319
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
12320
12321
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
12322
0
         {
12323
0
            expression_node<T>::ndb_t::collect(v_, node_delete_list);
12324
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>**> >&)
12325
12326
         std::size_t node_depth() const exprtk_override
12327
0
         {
12328
0
            return expression_node<T>::ndb_t::compute_node_depth(v_);
12329
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
12330
12331
      private:
12332
12333
         vector_interface<T>* ivec_ptr_;
12334
         branch_t                    v_;
12335
      };
12336
12337
      template <typename T>
12338
      class assignment_node exprtk_final : public binary_node<T>
12339
      {
12340
      public:
12341
12342
         typedef expression_node<T>* expression_ptr;
12343
         using binary_node<T>::branch;
12344
12345
         assignment_node(const operator_type& opr,
12346
                         expression_ptr branch0,
12347
                         expression_ptr branch1)
12348
326
         : binary_node<T>(opr, branch0, branch1)
12349
326
         , var_node_ptr_(0)
12350
326
         {
12351
326
            if (is_variable_node(branch(0)))
12352
326
            {
12353
326
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12354
326
            }
12355
326
         }
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
12348
163
         : binary_node<T>(opr, branch0, branch1)
12349
163
         , var_node_ptr_(0)
12350
163
         {
12351
163
            if (is_variable_node(branch(0)))
12352
163
            {
12353
163
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12354
163
            }
12355
163
         }
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
12348
163
         : binary_node<T>(opr, branch0, branch1)
12349
163
         , var_node_ptr_(0)
12350
163
         {
12351
163
            if (is_variable_node(branch(0)))
12352
163
            {
12353
163
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12354
163
            }
12355
163
         }
12356
12357
         inline T value() const exprtk_override
12358
72
         {
12359
72
            T& result = var_node_ptr_->ref();
12360
72
               result = branch(1)->value();
12361
12362
72
            return result;
12363
72
         }
exprtk::details::assignment_node<double>::value() const
Line
Count
Source
12358
36
         {
12359
36
            T& result = var_node_ptr_->ref();
12360
36
               result = branch(1)->value();
12361
12362
36
            return result;
12363
36
         }
exprtk::details::assignment_node<float>::value() const
Line
Count
Source
12358
36
         {
12359
36
            T& result = var_node_ptr_->ref();
12360
36
               result = branch(1)->value();
12361
12362
36
            return result;
12363
36
         }
12364
12365
         inline bool valid() const exprtk_override
12366
716
         {
12367
716
            return var_node_ptr_ && binary_node<T>::valid();
12368
716
         }
exprtk::details::assignment_node<double>::valid() const
Line
Count
Source
12366
358
         {
12367
358
            return var_node_ptr_ && binary_node<T>::valid();
12368
358
         }
exprtk::details::assignment_node<float>::valid() const
Line
Count
Source
12366
358
         {
12367
358
            return var_node_ptr_ && binary_node<T>::valid();
12368
358
         }
12369
12370
      private:
12371
12372
         variable_node<T>* var_node_ptr_;
12373
      };
12374
12375
      template <typename T>
12376
      class assignment_vec_elem_node exprtk_final : public binary_node<T>
12377
      {
12378
      public:
12379
12380
         typedef expression_node<T>* expression_ptr;
12381
         using binary_node<T>::branch;
12382
12383
         assignment_vec_elem_node(const operator_type& opr,
12384
                                  expression_ptr branch0,
12385
                                  expression_ptr branch1)
12386
0
         : binary_node<T>(opr, branch0, branch1)
12387
0
         , vec_node_ptr_(0)
12388
0
         {
12389
0
            if (is_vector_elem_node(branch(0)))
12390
0
            {
12391
0
               vec_node_ptr_ = static_cast<vector_elem_node<T>*>(branch(0));
12392
0
            }
12393
12394
0
            assert(valid());
12395
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>*)
12396
12397
         inline T value() const exprtk_override
12398
0
         {
12399
0
            T& result = vec_node_ptr_->ref();
12400
0
               result = branch(1)->value();
12401
12402
0
            return result;
12403
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::value() const
12404
12405
         inline bool valid() const exprtk_override
12406
0
         {
12407
0
            return vec_node_ptr_ && binary_node<T>::valid();
12408
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::valid() const
12409
12410
      private:
12411
12412
         vector_elem_node<T>* vec_node_ptr_;
12413
      };
12414
12415
      template <typename T>
12416
      class assignment_vec_elem_rtc_node exprtk_final : public binary_node<T>
12417
      {
12418
      public:
12419
12420
         typedef expression_node<T>* expression_ptr;
12421
         using binary_node<T>::branch;
12422
12423
         assignment_vec_elem_rtc_node(const operator_type& opr,
12424
                                      expression_ptr branch0,
12425
                                      expression_ptr branch1)
12426
0
         : binary_node<T>(opr, branch0, branch1)
12427
0
         , vec_node_ptr_(0)
12428
0
         {
12429
0
            if (is_vector_elem_rtc_node(branch(0)))
12430
0
            {
12431
0
               vec_node_ptr_ = static_cast<vector_elem_rtc_node<T>*>(branch(0));
12432
0
            }
12433
12434
0
            assert(valid());
12435
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>*)
12436
12437
         inline T value() const exprtk_override
12438
0
         {
12439
0
            T& result = vec_node_ptr_->ref();
12440
0
               result = branch(1)->value();
12441
12442
0
            return result;
12443
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
12444
12445
         inline bool valid() const exprtk_override
12446
0
         {
12447
0
            return vec_node_ptr_ && binary_node<T>::valid();
12448
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
12449
12450
      private:
12451
12452
         vector_elem_rtc_node<T>* vec_node_ptr_;
12453
      };
12454
12455
      template <typename T>
12456
      class assignment_rebasevec_elem_node exprtk_final : public binary_node<T>
12457
      {
12458
      public:
12459
12460
         typedef expression_node<T>* expression_ptr;
12461
         using expression_node<T>::branch;
12462
12463
         assignment_rebasevec_elem_node(const operator_type& opr,
12464
                                        expression_ptr branch0,
12465
                                        expression_ptr branch1)
12466
0
         : binary_node<T>(opr, branch0, branch1)
12467
0
         , rbvec_node_ptr_(0)
12468
0
         {
12469
0
            if (is_rebasevector_elem_node(branch(0)))
12470
0
            {
12471
0
               rbvec_node_ptr_ = static_cast<rebasevector_elem_node<T>*>(branch(0));
12472
0
            }
12473
12474
0
            assert(valid());
12475
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>*)
12476
12477
         inline T value() const exprtk_override
12478
0
         {
12479
0
            T& result = rbvec_node_ptr_->ref();
12480
0
               result = branch(1)->value();
12481
12482
0
            return result;
12483
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::value() const
12484
12485
         inline bool valid() const exprtk_override
12486
0
         {
12487
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
12488
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::valid() const
12489
12490
      private:
12491
12492
         rebasevector_elem_node<T>* rbvec_node_ptr_;
12493
      };
12494
12495
      template <typename T>
12496
      class assignment_rebasevec_elem_rtc_node exprtk_final : public binary_node<T>
12497
      {
12498
      public:
12499
12500
         typedef expression_node<T>* expression_ptr;
12501
         using expression_node<T>::branch;
12502
12503
         assignment_rebasevec_elem_rtc_node(const operator_type& opr,
12504
                                            expression_ptr branch0,
12505
                                            expression_ptr branch1)
12506
0
         : binary_node<T>(opr, branch0, branch1)
12507
0
         , rbvec_node_ptr_(0)
12508
0
         {
12509
0
            if (is_rebasevector_elem_rtc_node(branch(0)))
12510
0
            {
12511
0
               rbvec_node_ptr_ = static_cast<rebasevector_elem_rtc_node<T>*>(branch(0));
12512
0
            }
12513
12514
0
            assert(valid());
12515
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>*)
12516
12517
         inline T value() const exprtk_override
12518
0
         {
12519
0
            T& result = rbvec_node_ptr_->ref();
12520
0
               result = branch(1)->value();
12521
12522
0
            return result;
12523
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
12524
12525
         inline bool valid() const exprtk_override
12526
0
         {
12527
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
12528
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
12529
12530
      private:
12531
12532
         rebasevector_elem_rtc_node<T>* rbvec_node_ptr_;
12533
      };
12534
12535
      template <typename T>
12536
      class assignment_rebasevec_celem_node exprtk_final : public binary_node<T>
12537
      {
12538
      public:
12539
12540
         typedef expression_node<T>* expression_ptr;
12541
         using binary_node<T>::branch;
12542
12543
         assignment_rebasevec_celem_node(const operator_type& opr,
12544
                                         expression_ptr branch0,
12545
                                         expression_ptr branch1)
12546
0
         : binary_node<T>(opr, branch0, branch1)
12547
0
         , rbvec_node_ptr_(0)
12548
0
         {
12549
0
            if (is_rebasevector_celem_node(branch(0)))
12550
0
            {
12551
0
               rbvec_node_ptr_ = static_cast<rebasevector_celem_node<T>*>(branch(0));
12552
0
            }
12553
12554
0
            assert(valid());
12555
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>*)
12556
12557
         inline T value() const exprtk_override
12558
0
         {
12559
0
            T& result = rbvec_node_ptr_->ref();
12560
0
               result = branch(1)->value();
12561
12562
0
            return result;
12563
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::value() const
12564
12565
         inline bool valid() const exprtk_override
12566
0
         {
12567
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
12568
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::valid() const
12569
12570
      private:
12571
12572
         rebasevector_celem_node<T>* rbvec_node_ptr_;
12573
      };
12574
12575
      template <typename T>
12576
      class assignment_vec_node exprtk_final
12577
                                : public binary_node     <T>
12578
                                , public vector_interface<T>
12579
      {
12580
      public:
12581
12582
         typedef expression_node<T>* expression_ptr;
12583
         typedef vector_node<T>*     vector_node_ptr;
12584
         typedef vec_data_store<T>   vds_t;
12585
12586
         using binary_node<T>::branch;
12587
12588
         assignment_vec_node(const operator_type& opr,
12589
                             expression_ptr branch0,
12590
                             expression_ptr branch1)
12591
0
         : binary_node<T>(opr, branch0, branch1)
12592
0
         , vec_node_ptr_(0)
12593
0
         {
12594
0
            if (is_vector_node(branch(0)))
12595
0
            {
12596
0
               vec_node_ptr_ = static_cast<vector_node<T>*>(branch(0));
12597
0
               vds()         = vec_node_ptr_->vds();
12598
0
            }
12599
12600
0
            assert(valid());
12601
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>*)
12602
12603
         inline T value() const exprtk_override
12604
0
         {
12605
0
            const T v = branch(1)->value();
12606
12607
0
            T* vec = vds().data();
12608
12609
0
            loop_unroll::details lud(size());
12610
0
            const T* upper_bound = vec + lud.upper_bound;
12611
12612
0
            while (vec < upper_bound)
12613
0
            {
12614
0
               #define exprtk_loop(N) \
12615
0
               vec[N] = v;            \
12616
0
12617
0
               exprtk_loop( 0) exprtk_loop( 1)
12618
0
               exprtk_loop( 2) exprtk_loop( 3)
12619
0
               #ifndef exprtk_disable_superscalar_unroll
12620
0
               exprtk_loop( 4) exprtk_loop( 5)
12621
0
               exprtk_loop( 6) exprtk_loop( 7)
12622
0
               exprtk_loop( 8) exprtk_loop( 9)
12623
0
               exprtk_loop(10) exprtk_loop(11)
12624
0
               exprtk_loop(12) exprtk_loop(13)
12625
0
               exprtk_loop(14) exprtk_loop(15)
12626
0
               #endif
12627
12628
0
               vec += lud.batch_size;
12629
0
            }
12630
12631
0
            switch (lud.remainder)
12632
0
            {
12633
0
               #define case_stmt(N) \
12634
0
               case N : *vec++ = v; \
12635
0
               exprtk_fallthrough   \
12636
0
12637
0
               #ifndef exprtk_disable_superscalar_unroll
12638
0
               case_stmt(15) case_stmt(14)
12639
0
               case_stmt(13) case_stmt(12)
12640
0
               case_stmt(11) case_stmt(10)
12641
0
               case_stmt( 9) case_stmt( 8)
12642
0
               case_stmt( 7) case_stmt( 6)
12643
0
               case_stmt( 5) case_stmt( 4)
12644
0
               #endif
12645
0
               case_stmt( 3) case_stmt( 2)
12646
0
               case 1 : *vec++ = v;
12647
0
            }
12648
12649
0
            #undef exprtk_loop
12650
0
            #undef case_stmt
12651
12652
0
            return vec_node_ptr_->value();
12653
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::value() const
12654
12655
         vector_node_ptr vec() const exprtk_override
12656
0
         {
12657
0
            return vec_node_ptr_;
12658
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vec() const
12659
12660
         vector_node_ptr vec() exprtk_override
12661
0
         {
12662
0
            return vec_node_ptr_;
12663
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vec()
12664
12665
         inline typename expression_node<T>::node_type type() const exprtk_override
12666
0
         {
12667
0
            return expression_node<T>::e_vecvalass;
12668
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::type() const
12669
12670
         inline bool valid() const exprtk_override
12671
0
         {
12672
0
            return
12673
0
               vec_node_ptr_ &&
12674
0
               (vds().size() <= vec_node_ptr_->vec_holder().base_size()) &&
12675
0
               binary_node<T>::valid();
12676
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::valid() const
12677
12678
         std::size_t size() const exprtk_override
12679
0
         {
12680
0
            return vec_node_ptr_->vec_holder().size();
12681
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::size() const
12682
12683
         std::size_t base_size() const exprtk_override
12684
0
         {
12685
0
            return vec_node_ptr_->vec_holder().base_size();
12686
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::base_size() const
12687
12688
         vds_t& vds() exprtk_override
12689
0
         {
12690
0
            return vds_;
12691
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vds()
12692
12693
         const vds_t& vds() const exprtk_override
12694
0
         {
12695
0
            return vds_;
12696
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vds() const
12697
12698
      private:
12699
12700
         vector_node<T>* vec_node_ptr_;
12701
         vds_t           vds_;
12702
      };
12703
12704
      template <typename T>
12705
      class assignment_vecvec_node exprtk_final
12706
                                   : public binary_node     <T>
12707
                                   , public vector_interface<T>
12708
      {
12709
      public:
12710
12711
         typedef expression_node<T>* expression_ptr;
12712
         typedef vector_node<T>*     vector_node_ptr;
12713
         typedef vec_data_store<T>   vds_t;
12714
12715
         using binary_node<T>::branch;
12716
12717
         assignment_vecvec_node(const operator_type& opr,
12718
                                expression_ptr branch0,
12719
                                expression_ptr branch1)
12720
0
         : binary_node<T>(opr, branch0, branch1)
12721
0
         , vec0_node_ptr_(0)
12722
0
         , vec1_node_ptr_(0)
12723
0
         , initialised_(false)
12724
0
         , src_is_ivec_(false)
12725
0
         {
12726
0
            if (is_vector_node(branch(0)))
12727
0
            {
12728
0
               vec0_node_ptr_ = static_cast<vector_node<T>*>(branch(0));
12729
0
               vds()          = vec0_node_ptr_->vds();
12730
0
            }
12731
12732
0
            if (is_vector_node(branch(1)))
12733
0
            {
12734
0
               vec1_node_ptr_ = static_cast<vector_node<T>*>(branch(1));
12735
0
               vds_t::match_sizes(vds(),vec1_node_ptr_->vds());
12736
0
            }
12737
0
            else if (is_ivector_node(branch(1)))
12738
0
            {
12739
0
               vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0);
12740
12741
0
               if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1))))
12742
0
               {
12743
0
                  vec1_node_ptr_ = vi->vec();
12744
12745
0
                  if (!vi->side_effect())
12746
0
                  {
12747
0
                     vi->vds()    = vds();
12748
0
                     src_is_ivec_ = true;
12749
0
                  }
12750
0
                  else
12751
0
                     vds_t::match_sizes(vds(),vi->vds());
12752
0
               }
12753
0
            }
12754
12755
0
            initialised_ =
12756
0
               vec0_node_ptr_               &&
12757
0
               vec1_node_ptr_               &&
12758
0
               (size() <= base_size())      &&
12759
0
               (vds_.size() <= base_size()) &&
12760
0
               binary_node<T>::valid();
12761
12762
0
            assert(valid());
12763
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>*)
12764
12765
         inline T value() const exprtk_override
12766
0
         {
12767
0
            branch(1)->value();
12768
12769
0
            if (src_is_ivec_)
12770
0
               return vec0_node_ptr_->value();
12771
12772
0
            T* vec0 = vec0_node_ptr_->vds().data();
12773
0
            T* vec1 = vec1_node_ptr_->vds().data();
12774
12775
0
            loop_unroll::details lud(size());
12776
0
            const T* upper_bound = vec0 + lud.upper_bound;
12777
12778
0
            while (vec0 < upper_bound)
12779
0
            {
12780
0
               #define exprtk_loop(N) \
12781
0
               vec0[N] = vec1[N];     \
12782
0
12783
0
               exprtk_loop( 0) exprtk_loop( 1)
12784
0
               exprtk_loop( 2) exprtk_loop( 3)
12785
0
               #ifndef exprtk_disable_superscalar_unroll
12786
0
               exprtk_loop( 4) exprtk_loop( 5)
12787
0
               exprtk_loop( 6) exprtk_loop( 7)
12788
0
               exprtk_loop( 8) exprtk_loop( 9)
12789
0
               exprtk_loop(10) exprtk_loop(11)
12790
0
               exprtk_loop(12) exprtk_loop(13)
12791
0
               exprtk_loop(14) exprtk_loop(15)
12792
0
               #endif
12793
12794
0
               vec0 += lud.batch_size;
12795
0
               vec1 += lud.batch_size;
12796
0
            }
12797
12798
0
            switch (lud.remainder)
12799
0
            {
12800
0
               #define case_stmt(N,fall_through) \
12801
0
               case N : *vec0++ = *vec1++;       \
12802
0
               fall_through                      \
12803
0
12804
0
               #ifndef exprtk_disable_superscalar_unroll
12805
0
               case_stmt(15, exprtk_fallthrough) case_stmt(14, exprtk_fallthrough)
12806
0
               case_stmt(13, exprtk_fallthrough) case_stmt(12, exprtk_fallthrough)
12807
0
               case_stmt(11, exprtk_fallthrough) case_stmt(10, exprtk_fallthrough)
12808
0
               case_stmt( 9, exprtk_fallthrough) case_stmt( 8, exprtk_fallthrough)
12809
0
               case_stmt( 7, exprtk_fallthrough) case_stmt( 6, exprtk_fallthrough)
12810
0
               case_stmt( 5, exprtk_fallthrough) case_stmt( 4, exprtk_fallthrough)
12811
0
               #endif
12812
0
               case_stmt( 3, exprtk_fallthrough) case_stmt( 2, exprtk_fallthrough)
12813
0
               case_stmt( 1, (void)0;)
12814
0
            }
12815
12816
0
            #undef exprtk_loop
12817
0
            #undef case_stmt
12818
12819
0
            return vec0_node_ptr_->value();
12820
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::value() const
12821
12822
         vector_node_ptr vec() exprtk_override
12823
0
         {
12824
0
            return vec0_node_ptr_;
12825
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vec()
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vec()
12826
12827
         vector_node_ptr vec() const exprtk_override
12828
0
         {
12829
0
            return vec0_node_ptr_;
12830
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vec() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vec() const
12831
12832
         inline typename expression_node<T>::node_type type() const exprtk_override
12833
0
         {
12834
0
            return expression_node<T>::e_vecvecass;
12835
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::type() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::type() const
12836
12837
         inline bool valid() const exprtk_override
12838
0
         {
12839
0
            return initialised_;
12840
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::valid() const
12841
12842
         std::size_t size() const exprtk_override
12843
0
         {
12844
0
            return std::min(
12845
0
               vec0_node_ptr_->vec_holder().size(),
12846
0
               vec1_node_ptr_->vec_holder().size());
12847
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::size() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::size() const
12848
12849
         std::size_t base_size() const exprtk_override
12850
0
         {
12851
0
            return std::min(
12852
0
               vec0_node_ptr_->vec_holder().base_size(),
12853
0
               vec1_node_ptr_->vec_holder().base_size());
12854
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::base_size() const
12855
12856
         vds_t& vds() exprtk_override
12857
0
         {
12858
0
            return vds_;
12859
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vds()
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vds()
12860
12861
         const vds_t& vds() const exprtk_override
12862
0
         {
12863
0
            return vds_;
12864
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vds() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vds() const
12865
12866
      private:
12867
12868
         vector_node<T>* vec0_node_ptr_;
12869
         vector_node<T>* vec1_node_ptr_;
12870
         bool            initialised_;
12871
         bool            src_is_ivec_;
12872
         vds_t           vds_;
12873
      };
12874
12875
      template <typename T, typename Operation>
12876
      class assignment_op_node exprtk_final : public binary_node<T>
12877
      {
12878
      public:
12879
12880
         typedef expression_node<T>* expression_ptr;
12881
         using binary_node<T>::branch;
12882
12883
         assignment_op_node(const operator_type& opr,
12884
                            expression_ptr branch0,
12885
                            expression_ptr branch1)
12886
385
         : binary_node<T>(opr, branch0, branch1)
12887
385
         , var_node_ptr_(0)
12888
385
         {
12889
385
            if (is_variable_node(branch(0)))
12890
385
            {
12891
385
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
385
            }
12893
12894
385
            assert(valid());
12895
385
         }
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
12886
59
         : binary_node<T>(opr, branch0, branch1)
12887
59
         , var_node_ptr_(0)
12888
59
         {
12889
59
            if (is_variable_node(branch(0)))
12890
59
            {
12891
59
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
59
            }
12893
12894
59
            assert(valid());
12895
59
         }
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
12886
9
         : binary_node<T>(opr, branch0, branch1)
12887
9
         , var_node_ptr_(0)
12888
9
         {
12889
9
            if (is_variable_node(branch(0)))
12890
9
            {
12891
9
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
9
            }
12893
12894
9
            assert(valid());
12895
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
12886
43
         : binary_node<T>(opr, branch0, branch1)
12887
43
         , var_node_ptr_(0)
12888
43
         {
12889
43
            if (is_variable_node(branch(0)))
12890
43
            {
12891
43
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
43
            }
12893
12894
43
            assert(valid());
12895
43
         }
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
12886
13
         : binary_node<T>(opr, branch0, branch1)
12887
13
         , var_node_ptr_(0)
12888
13
         {
12889
13
            if (is_variable_node(branch(0)))
12890
13
            {
12891
13
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
13
            }
12893
12894
13
            assert(valid());
12895
13
         }
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
12886
73
         : binary_node<T>(opr, branch0, branch1)
12887
73
         , var_node_ptr_(0)
12888
73
         {
12889
73
            if (is_variable_node(branch(0)))
12890
73
            {
12891
73
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
73
            }
12893
12894
73
            assert(valid());
12895
73
         }
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
12886
53
         : binary_node<T>(opr, branch0, branch1)
12887
53
         , var_node_ptr_(0)
12888
53
         {
12889
53
            if (is_variable_node(branch(0)))
12890
53
            {
12891
53
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
53
            }
12893
12894
53
            assert(valid());
12895
53
         }
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
12886
9
         : binary_node<T>(opr, branch0, branch1)
12887
9
         , var_node_ptr_(0)
12888
9
         {
12889
9
            if (is_variable_node(branch(0)))
12890
9
            {
12891
9
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
9
            }
12893
12894
9
            assert(valid());
12895
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
12886
41
         : binary_node<T>(opr, branch0, branch1)
12887
41
         , var_node_ptr_(0)
12888
41
         {
12889
41
            if (is_variable_node(branch(0)))
12890
41
            {
12891
41
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
41
            }
12893
12894
41
            assert(valid());
12895
41
         }
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
12886
13
         : binary_node<T>(opr, branch0, branch1)
12887
13
         , var_node_ptr_(0)
12888
13
         {
12889
13
            if (is_variable_node(branch(0)))
12890
13
            {
12891
13
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
13
            }
12893
12894
13
            assert(valid());
12895
13
         }
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
12886
72
         : binary_node<T>(opr, branch0, branch1)
12887
72
         , var_node_ptr_(0)
12888
72
         {
12889
72
            if (is_variable_node(branch(0)))
12890
72
            {
12891
72
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12892
72
            }
12893
12894
72
            assert(valid());
12895
72
         }
12896
12897
         inline T value() const exprtk_override
12898
202
         {
12899
202
            T& v = var_node_ptr_->ref();
12900
202
            v = Operation::process(v,branch(1)->value());
12901
12902
202
            return v;
12903
202
         }
exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::value() const
Line
Count
Source
12898
41
         {
12899
41
            T& v = var_node_ptr_->ref();
12900
41
            v = Operation::process(v,branch(1)->value());
12901
12902
41
            return v;
12903
41
         }
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::value() const
Line
Count
Source
12898
7
         {
12899
7
            T& v = var_node_ptr_->ref();
12900
7
            v = Operation::process(v,branch(1)->value());
12901
12902
7
            return v;
12903
7
         }
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::value() const
Line
Count
Source
12898
32
         {
12899
32
            T& v = var_node_ptr_->ref();
12900
32
            v = Operation::process(v,branch(1)->value());
12901
12902
32
            return v;
12903
32
         }
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::value() const
Line
Count
Source
12898
12
         {
12899
12
            T& v = var_node_ptr_->ref();
12900
12
            v = Operation::process(v,branch(1)->value());
12901
12902
12
            return v;
12903
12
         }
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::value() const
Line
Count
Source
12898
13
         {
12899
13
            T& v = var_node_ptr_->ref();
12900
13
            v = Operation::process(v,branch(1)->value());
12901
12902
13
            return v;
12903
13
         }
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::value() const
Line
Count
Source
12898
35
         {
12899
35
            T& v = var_node_ptr_->ref();
12900
35
            v = Operation::process(v,branch(1)->value());
12901
12902
35
            return v;
12903
35
         }
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::value() const
Line
Count
Source
12898
7
         {
12899
7
            T& v = var_node_ptr_->ref();
12900
7
            v = Operation::process(v,branch(1)->value());
12901
12902
7
            return v;
12903
7
         }
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::value() const
Line
Count
Source
12898
31
         {
12899
31
            T& v = var_node_ptr_->ref();
12900
31
            v = Operation::process(v,branch(1)->value());
12901
12902
31
            return v;
12903
31
         }
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::value() const
Line
Count
Source
12898
12
         {
12899
12
            T& v = var_node_ptr_->ref();
12900
12
            v = Operation::process(v,branch(1)->value());
12901
12902
12
            return v;
12903
12
         }
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::value() const
Line
Count
Source
12898
12
         {
12899
12
            T& v = var_node_ptr_->ref();
12900
12
            v = Operation::process(v,branch(1)->value());
12901
12902
12
            return v;
12903
12
         }
12904
12905
         inline bool valid() const exprtk_override
12906
2.51k
         {
12907
2.51k
            return var_node_ptr_ && binary_node<T>::valid();
12908
2.51k
         }
exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::valid() const
Line
Count
Source
12906
162
         {
12907
162
            return var_node_ptr_ && binary_node<T>::valid();
12908
162
         }
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::valid() const
Line
Count
Source
12906
31
         {
12907
31
            return var_node_ptr_ && binary_node<T>::valid();
12908
31
         }
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::valid() const
Line
Count
Source
12906
357
         {
12907
357
            return var_node_ptr_ && binary_node<T>::valid();
12908
357
         }
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::valid() const
Line
Count
Source
12906
27
         {
12907
27
            return var_node_ptr_ && binary_node<T>::valid();
12908
27
         }
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::valid() const
Line
Count
Source
12906
704
         {
12907
704
            return var_node_ptr_ && binary_node<T>::valid();
12908
704
         }
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::valid() const
Line
Count
Source
12906
144
         {
12907
144
            return var_node_ptr_ && binary_node<T>::valid();
12908
144
         }
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::valid() const
Line
Count
Source
12906
31
         {
12907
31
            return var_node_ptr_ && binary_node<T>::valid();
12908
31
         }
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::valid() const
Line
Count
Source
12906
332
         {
12907
332
            return var_node_ptr_ && binary_node<T>::valid();
12908
332
         }
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::valid() const
Line
Count
Source
12906
27
         {
12907
27
            return var_node_ptr_ && binary_node<T>::valid();
12908
27
         }
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::valid() const
Line
Count
Source
12906
695
         {
12907
695
            return var_node_ptr_ && binary_node<T>::valid();
12908
695
         }
12909
12910
      private:
12911
12912
         variable_node<T>* var_node_ptr_;
12913
      };
12914
12915
      template <typename T, typename Operation>
12916
      class assignment_vec_elem_op_node exprtk_final : public binary_node<T>
12917
      {
12918
      public:
12919
12920
         typedef expression_node<T>* expression_ptr;
12921
         using binary_node<T>::branch;
12922
12923
         assignment_vec_elem_op_node(const operator_type& opr,
12924
                                     expression_ptr branch0,
12925
                                     expression_ptr branch1)
12926
0
         : binary_node<T>(opr, branch0, branch1)
12927
0
         , vec_node_ptr_(0)
12928
0
         {
12929
0
            if (is_vector_elem_node(branch(0)))
12930
0
            {
12931
0
               vec_node_ptr_ = static_cast<vector_elem_node<T>*>(branch(0));
12932
0
            }
12933
12934
0
            assert(valid());
12935
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>*)
12936
12937
         inline T value() const exprtk_override
12938
0
         {
12939
0
            T& v = vec_node_ptr_->ref();
12940
0
               v = Operation::process(v,branch(1)->value());
12941
12942
0
            return v;
12943
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
12944
12945
         inline bool valid() const exprtk_override
12946
0
         {
12947
0
            return vec_node_ptr_ && binary_node<T>::valid();
12948
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
12949
12950
      private:
12951
12952
         vector_elem_node<T>* vec_node_ptr_;
12953
      };
12954
12955
      template <typename T, typename Operation>
12956
      class assignment_vec_elem_op_rtc_node exprtk_final : public binary_node<T>
12957
      {
12958
      public:
12959
12960
         typedef expression_node<T>* expression_ptr;
12961
         using binary_node<T>::branch;
12962
12963
         assignment_vec_elem_op_rtc_node(const operator_type& opr,
12964
                                         expression_ptr branch0,
12965
                                         expression_ptr branch1)
12966
0
         : binary_node<T>(opr, branch0, branch1)
12967
0
         , vec_node_ptr_(0)
12968
0
         {
12969
0
            if (is_vector_elem_rtc_node(branch(0)))
12970
0
            {
12971
0
               vec_node_ptr_ = static_cast<vector_elem_rtc_node<T>*>(branch(0));
12972
0
            }
12973
12974
0
            assert(valid());
12975
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>*)
12976
12977
         inline T value() const exprtk_override
12978
0
         {
12979
0
            T& v = vec_node_ptr_->ref();
12980
0
               v = Operation::process(v,branch(1)->value());
12981