Spaces:
Running
Operators
Pre-defined
All Base julia operators that take 1 or 2 float32 as input, and output a float32 as output, are available. A selection of these and other valid operators are stated below.
Binary
plus, sub, mult, pow, div, greater, mod, beta, logical_or,
logical_and
Unary
neg,
square,
cube,
exp,
abs,
logm (=log(abs(x) + 1e-8)),
logm10 (=log10(abs(x) + 1e-8)),
logm2 (=log2(abs(x) + 1e-8)),
sqrtm (=sqrt(abs(x)))
log1p,
sin,
cos,
tan,
sinh,
cosh,
tanh,
asin,
acos,
atan,
asinh,
acosh,
atanh,
erf,
erfc,
gamma,
relu,
round,
floor,
ceil,
round,
sign.
Custom
Instead of passing a predefined operator as a string,
you can define with by passing it to the pysr function, with, e.g.,
pysr(
...,
unary_operators=["myfunction(x) = x^2"],
binary_operators=["myotherfunction(x, y) = x^2*y"]
)
You can also define your own in julia/operators.jl,
and pass the function name as a string. This is suitable
for more complex functions. Make sure that it works with
Float32 as a datatype. That means you need to write 1.5f3
instead of 1.5e3, if you write any constant numbers.
Your operator should work with the entire real line (you can use
abs(x) - see logm); otherwise
the search code will be slowed down with domain errors.