[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/bsp/lk/lib/libm/s_tan.c b/src/bsp/lk/lib/libm/s_tan.c
new file mode 100644
index 0000000..36b1138
--- /dev/null
+++ b/src/bsp/lk/lib/libm/s_tan.c
@@ -0,0 +1,84 @@
+/* @(#)s_tan.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/* tan(x)
+ * Return tangent function of x.
+ *
+ * kernel function:
+ *  __kernel_tan        ... tangent function on [-pi/4,pi/4]
+ *  __ieee754_rem_pio2  ... argument reduction routine
+ *
+ * Method.
+ *      Let S,C and T denote the sin, cos and tan respectively on
+ *  [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ *  in [-pi/4 , +pi/4], and let n = k mod 4.
+ *  We have
+ *
+ *          n        sin(x)      cos(x)        tan(x)
+ *     ----------------------------------------------------------
+ *      0          S       C         T
+ *      1          C      -S        -1/T
+ *      2         -S      -C         T
+ *      3         -C       S        -1/T
+ *     ----------------------------------------------------------
+ *
+ * Special cases:
+ *      Let trig be any of sin, cos, or tan.
+ *      trig(+-INF)  is NaN, with signals;
+ *      trig(NaN)    is that NaN;
+ *
+ * Accuracy:
+ *  TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <float.h>
+
+#include "math.h"
+#define INLINE_REM_PIO2
+#include "math_private.h"
+#include "e_rem_pio2.c"
+
+double
+tan(double x)
+{
+    double y[2],z=0.0;
+    int32_t n, ix;
+
+    /* High word of x. */
+    GET_HIGH_WORD(ix,x);
+
+    /* |x| ~< pi/4 */
+    ix &= 0x7fffffff;
+    if (ix <= 0x3fe921fb) {
+        if (ix<0x3e400000)          /* x < 2**-27 */
+            if ((int)x==0) return x;    /* generate inexact */
+        return __kernel_tan(x,z,1);
+    }
+
+    /* tan(Inf or NaN) is NaN */
+    else if (ix>=0x7ff00000) return x-x;        /* NaN */
+
+    /* argument reduction needed */
+    else {
+        n = __ieee754_rem_pio2(x,y);
+        return __kernel_tan(y[0],y[1],1-((n&1)<<1)); /*   1 -- n even
+                            -1 -- n odd */
+    }
+}
+#if SUPPORT_LONG_DOUBLE
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(tan, tanl);
+#endif
+#endif