this does not include the different slopes for `x>0` and `x<0`and the slope ignores the box length.

```c++
return float_X(math::abs(x)<=float_X(0.5*L_x))*(float_X(1.0)-float_X(2.0/L_x) * math::abs(x) );
```