code: public static double asin(double value) {
          if (value > 1) {
              return Double.NaN;
          } else if (value < 0) {
              return -asin(-value);
          } else {
              double temp = Math.sqrt(1 - value * value);
              if (value > 0.7) {
                  return HALF_PI - msatan(temp / value);
              } else {
                  return msatan(value / temp);
              }
          }
      }
docs: Calculates the arc sine of the value specified<br><br> Returns NaN if the input value is outside the sine range
  
  @param value of the sine
  @return sine arc in radians