internal static MultiPrecision <N> SinHalfPI(MultiPrecision <N> x) { if (!x.IsFinite) { return(NaN); } if (x.IsZero) { return(x); } if (x.Exponent < 0) { return(MultiPrecision <Plus1 <N> > .SinCurveTaylorApprox(x.Convert <Plus1 <N> >()).Convert <N>()); } return(SinCurveTaylorApprox(x)); }