public static FloatL Acos(FloatL f) { //return Math.Acos(f.ToDouble()); int num = (int)FixPointMath.Divide(f.m_numerator * (long)AcosLookupTable.HALF_COUNT, FloatL.m_denominator) + AcosLookupTable.HALF_COUNT; num = FixPointMath.Clamp(num, 0, AcosLookupTable.COUNT); return(new FloatL((long)AcosLookupTable.table[num]) / new FloatL(10000)); }
public static FloatL Atan2(FloatL yL, FloatL xL) { //return Math.Atan2(y.ToDouble(), x.ToDouble()); long y = yL.m_numerator; long x = xL.m_numerator; int num; int num2; if (x < 0) { if (y < 0) { x = -x; y = -y; num = 1; } else { x = -x; num = -1; } num2 = -31416; } else { if (y < 0) { y = -y; num = -1; } else { num = 1; } num2 = 0; } int dIM = Atan2LookupTable.DIM; long num3 = (long)(dIM - 1); long b = (long)((x >= y) ? x : y); int num4 = (int)FixPointMath.Divide((long)x * num3, b); int num5 = (int)FixPointMath.Divide((long)y * num3, b); int num6 = Atan2LookupTable.table[num5 * dIM + num4]; return(new FloatL((num6 + num2) * num) / new FloatL(10000)); }