Use more correct methods.
Added plant properties.
Make goals more clearer.

By specifying the parameters as named ones we make it more clearer
what's expected.
Use int cast for rounding.

-std::lrint is missing in msvc.
-A third party library can change behavior of
ember with std::fesetround() which is very bad.
Replace initializer lists with old style variables.

Initializer lists are not supported by msvc.