Kestrel Interface
Loading...
Searching...
No Matches
kest_expression.h
Go to the documentation of this file.
1#ifndef EXPR_H_
2#define EXPR_H_
3
4#define KEST_EXPR_FORM_ATOMIC 0
5#define KEST_EXPR_FORM_UNARY_OP 1
6#define KEST_EXPR_FORM_UNARY_FN 2
7#define KEST_EXPR_FORM_INFIX_OP 3
8#define KEST_EXPR_FORM_NORM 4
9
10#define KEST_EXPR_CONST 0
11#define KEST_EXPR_REF 1
12#define KEST_EXPR_NEG 2
13#define KEST_EXPR_ADD 3
14#define KEST_EXPR_SUB 4
15#define KEST_EXPR_MUL 5
16#define KEST_EXPR_DIV 6
17#define KEST_EXPR_ABS 7
18#define KEST_EXPR_SQR 8
19#define KEST_EXPR_SQRT 9
20#define KEST_EXPR_EXP 10
21#define KEST_EXPR_LN 11
22#define KEST_EXPR_POW 12
23#define KEST_EXPR_SIN 13
24#define KEST_EXPR_SINH 14
25#define KEST_EXPR_COS 15
26#define KEST_EXPR_COSH 16
27#define KEST_EXPR_TAN 17
28#define KEST_EXPR_TANH 18
29#define KEST_EXPR_ASIN 19
30#define KEST_EXPR_ACOS 20
31#define KEST_EXPR_ATAN 21
32
33#define KEST_EXPR_TYPE_MAX_VAL KEST_EXPR_ATAN
34
35#define KEST_EXPR_REC_MAX_DEPTH 128
36
37//#define KEST_BOUNDS_CHECK_VERBOSE
38
39typedef struct kest_expression
40{
41 int type;
43 int cached;
45 union {
46 float val_float;
47 char *ref_name;
49 } val;
51
53
59
61
63
65
66float kest_expression_min(kest_expression *expr, kest_parameter_pll *params);
67float kest_expression_max(kest_expression *expr, kest_parameter_pll *params);
68
70
71typedef struct kest_interval
72{
73 float a;
74 float b;
76
78kest_interval kest_interval_ab(float a, float b);
82
84
85char *kest_expression_type_to_str(int type);
88
100
101typedef struct {
102 const char *name;
105
107
108#endif
kest_expression kest_expression_zero
kest_expression kest_expression_int_max
kest_expression kest_expression_standard_gain_min
kest_expression kest_expression_pi
kest_expression kest_expression_freq_max
kest_expression kest_expression_sample_rate
kest_expression kest_expression_standard_gain_max
kest_expression kest_expression_one
kest_expression kest_expression_int_min
kest_expression kest_expression_minus_one
kest_expression kest_expression_e
kest_interval kest_interval__b(float b)
int kest_expression_detect_constants(kest_expression *expr)
float kest_expression_max(kest_expression *expr, kest_parameter_pll *params)
int kest_expression_references_param(kest_expression *expr, kest_parameter *param)
kest_expression * new_m_expression_reference(char *ref_name)
kest_expression * new_m_expression_const(float v)
kest_interval kest_interval_a_(float a)
int kest_expression_is_constant(kest_expression *expr)
kest_interval kest_expression_compute_range(kest_expression *expr, kest_expr_scope *scope)
char * kest_expression_type_to_str(int type)
int kest_expression_print(kest_expression *expr)
kest_interval kest_interval_real_line()
kest_expression * new_m_expression_unary(int unary_type, kest_expression *rhs)
const char * kest_expression_to_string(kest_expression *expr)
float kest_expression_min(kest_expression *expr, kest_parameter_pll *params)
float kest_expression_evaluate(kest_expression *expr, kest_expr_scope *scope)
kest_expression * new_m_expression_binary(int binary_type, kest_expression *arg_1, kest_expression *arg_2)
kest_interval kest_interval_singleton(float v)
kest_interval kest_interval_ab(float a, float b)
kest_expression kest_expression_const(float v)
#define DECLARE_LINKED_PTR_LIST(X)
#define DECLARE_PTR_LIST(X)
Definition kest_list.h:315
union kest_expression::@166010055114121035173062362142367362353107353142 val
struct kest_expression ** sub_exprs
kest_expression * expr