Ejemplo n.º 1
0
        public static DeterministicFloat Asin(DeterministicFloat f)
        {
            bool isNegative = f < 0;

            f = Abs(f);

            if (f > DeterministicFloat.OneF)
            {
                throw new ArithmeticException("Bad Asin Input:" + f.ToDouble());
            }

            DeterministicFloat f1 = mul(mul(mul(mul(new DeterministicFloat(145103 >> DeterministicFloat.SHIFT_AMOUNT, false), f) -
                                                new DeterministicFloat(599880 >> DeterministicFloat.SHIFT_AMOUNT, false), f) +
                                            new DeterministicFloat(1420468 >> DeterministicFloat.SHIFT_AMOUNT, false), f) -
                                        new DeterministicFloat(3592413 >> DeterministicFloat.SHIFT_AMOUNT, false), f) +
                                    new DeterministicFloat(26353447 >> DeterministicFloat.SHIFT_AMOUNT, false);
            DeterministicFloat f2 = PI / new DeterministicFloat(2, true) - (Sqrt(DeterministicFloat.OneF - f) * f1);

            return(isNegative ? f2.Inverse : f2);
        }