示例#1
0
        public static FInt Asin(FInt F)
        {
            bool isNegative = F < 0;

            F = Abs(F);

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

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

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