75 return g_ascii_strtod(self->
p, &self->
p);
84 for(; *self->
p; self->
p++)
105 if(self->
p[1] ==
'-')
243 left = fmodf(left, right);
264 left = powf(left, right);
325 if(
IS_NULL_PTR(formula) || *formula ==
'\0')
return NAN;
327 gchar *dotformula = g_strdup(formula);
330 self->
p = g_strdelimit(dotformula,
",",
'.');
376 if(self->
token) result = NAN;
static float parse_expression(parser_state_t *self)
static float parse_unary_expression(parser_state_t *self)
static float parse_additive_expression(parser_state_t *self)
static float read_number(parser_state_t *self)
float dt_calculator_solve(const float x, const char *formula)
static float parse_multiplicative_expression(parser_state_t *self)
static float parse_power_expression(parser_state_t *self)
static float parse_primary_expression(parser_state_t *self)
static dt_calc_token_t * get_token(parser_state_t *self)
#define IS_NULL_PTR(p)
C is way too permissive with !=, == and if(var) checks, which can mean too many things depending on w...
#define dt_free(ptr)
g_free() ptr and set it to NULL, skipping both if it is already NULL.