code: static double sin_roquen_arith(double x) {
          double xi = Math.floor((x + PI_4) * PI_INV);
          double x_ = x - xi * PI;
          double sign = ((int)xi & 1) * -2 + 1;
          double x2 = x_ * x_;
  
          // code from sin_theagentd_arith:
          // double sin = x_;
          // double tx = x_ * x2;
          // sin += tx * c1; tx *= x2;
          // sin += tx * c2; tx *= x2;
          // sin += tx * c3; tx *= x2;
          // sin += tx * c4; tx *= x2;
          // sin += tx * c5; tx *= x2;
          // sin += tx * c6; tx *= x2;
          // sin += tx * c7;
          // return sign * sin;
  
          double sin;
          x_  = sign*x_;
          sin =          c7;
          sin = sin*x2 + c6;
          sin = sin*x2 + c5;
          sin = sin*x2 + c4;
          sin = sin*x2 + c3;
          sin = sin*x2 + c2;
          sin = sin*x2 + c1;
          return x_ + x_*x2*sin;
      }
docs: Reference: <a href="http://www.java-gaming.org/topics/joml-1-8-0-release/37491/msg/361718/view.html#msg361718">http://www.java-gaming.org/</a>