C++ Mathematical Expression Toolkit (ExprTk)
release
Toggle main menu visibility
Loading...
Searching...
No Matches
exprtk
exprtk_degree_trigonometry_example.cpp
Go to the documentation of this file.
1
/*
2
**************************************************************
3
* C++ Mathematical Expression Toolkit Library *
4
* *
5
* ExprTk Trigonometry In Degrees Example *
6
* Author: Arash Partow (1999-2025) *
7
* URL: https://www.partow.net/programming/exprtk/index.html *
8
* *
9
* Copyright notice: *
10
* Free use of the Mathematical Expression Toolkit Library is *
11
* permitted under the guidelines and in accordance with the *
12
* most current version of the MIT License. *
13
* https://www.opensource.org/licenses/MIT *
14
* SPDX-License-Identifier: MIT *
15
* *
16
**************************************************************
17
*/
18
19
20
#include <cstdio>
21
#include <string>
22
23
#include "
exprtk.hpp
"
24
25
26
template
<
typename
T>
27
struct
sine_deg
final :
public
exprtk::ifunction
<T>
28
{
29
using
exprtk::ifunction
<T>::operator();
30
31
sine_deg
() :
exprtk
::
ifunction
<T>(1) {}
32
33
inline
T
operator()
(
const
T& v)
override
34
{
35
return
std::sin((v * T(
exprtk::details::numeric::constant::pi
)) / T(180));
36
}
37
};
38
39
template
<
typename
T>
40
struct
cosine_deg
final :
public
exprtk::ifunction
<T>
41
{
42
using
exprtk::ifunction
<T>::operator();
43
44
cosine_deg
() :
exprtk
::
ifunction
<T>(1) {}
45
46
inline
T
operator()
(
const
T& v)
override
47
{
48
return
std::cos((v * T(
exprtk::details::numeric::constant::pi
)) / T(180));
49
}
50
};
51
52
template
<
typename
T>
53
void
exprtk_degree_trigonometry_example
()
54
{
55
typedef
exprtk::symbol_table<T>
symbol_table_t;
56
typedef
exprtk::expression<T>
expression_t;
57
typedef
exprtk::parser<T>
parser_t;
58
typedef
typename
parser_t::settings_store settings_t;
59
60
sine_deg <T> sine;
61
cosine_deg<T>
cosine;
62
63
exprtk::rtl::io::package<T>
io_package;
64
65
symbol_table_t symbol_table;
66
67
symbol_table.add_package (io_package );
68
symbol_table.add_reserved_function(
"sin"
, sine );
69
symbol_table.add_reserved_function(
"cos"
, cosine);
70
71
typedef
typename
parser_t::settings_store settings_t;
72
73
parser_t parser;
74
75
// Disable the ExprTk internal sine/cosine functions
76
parser.settings()
77
.disable_base_function(settings_t::e_bf_sin)
78
.disable_base_function(settings_t::e_bf_cos);
79
80
const
std::string trigonometry_program =
81
" println('sin(30) = ', sin(30)); "
82
" println('cos(30) = ', cos(30)); "
83
" println('sin(45) = ', sin(45)); "
84
" println('cos(45) = ', cos(45)); "
85
" println('sin(60) = ', sin(60)); "
86
" println('cos(60) = ', cos(60)); "
;
87
88
expression_t expression;
89
expression.register_symbol_table(symbol_table);
90
91
parser.compile(trigonometry_program,expression);
92
93
expression.value();
94
}
95
96
int
main
()
97
{
98
exprtk_degree_trigonometry_example<double>
();
99
return
0;
100
}
exprtk::expression
Definition
exprtk.hpp:21832
exprtk::ifunction
Definition
exprtk.hpp:19861
exprtk::ifunction::ifunction
ifunction(const std::size_t &pc)
Definition
exprtk.hpp:19864
exprtk::parser
Definition
exprtk.hpp:22525
exprtk::symbol_table
Definition
exprtk.hpp:20090
exprtk.hpp
exprtk_degree_trigonometry_example
void exprtk_degree_trigonometry_example()
Definition
exprtk_degree_trigonometry_example.cpp:53
main
int main()
Definition
exprtk_degree_trigonometry_example.cpp:96
exprtk::details::numeric::constant::pi
static const double pi
Definition
exprtk.hpp:820
exprtk
Definition
exprtk.hpp:60
cosine_deg
Definition
exprtk_degree_trigonometry_example.cpp:41
cosine_deg::operator()
T operator()(const T &v) override
Definition
exprtk_degree_trigonometry_example.cpp:46
cosine_deg::cosine_deg
cosine_deg()
Definition
exprtk_degree_trigonometry_example.cpp:44
exprtk::rtl::io::package
Definition
exprtk.hpp:44296
sine_deg::sine_deg
sine_deg()
Definition
exprtk_degree_trigonometry_example.cpp:31
sine_deg::operator()
T operator()(const T &v) override
Definition
exprtk_degree_trigonometry_example.cpp:33
Generated by
1.17.0