[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/bsp/lk/lib/libm/s_cos.c b/src/bsp/lk/lib/libm/s_cos.c
new file mode 100644
index 0000000..b71438b
--- /dev/null
+++ b/src/bsp/lk/lib/libm/s_cos.c
@@ -0,0 +1,93 @@
+/* @(#)s_cos.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$");
+
+/* cos(x)
+ * Return cosine function of x.
+ *
+ * kernel function:
+ *  __kernel_sin        ... sine function on [-pi/4,pi/4]
+ *  __kernel_cos        ... cosine 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
+cos(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<0x3e46a09e)          /* if x < 2**-27 * sqrt(2) */
+            if (((int)x)==0) return 1.0; /* generate inexact */
+        return __kernel_cos(x,z);
+    }
+
+    /* cos(Inf or NaN) is NaN */
+    else if (ix>=0x7ff00000) return x-x;
+
+    /* argument reduction needed */
+    else {
+        n = __ieee754_rem_pio2(x,y);
+        switch (n&3) {
+            case 0:
+                return  __kernel_cos(y[0],y[1]);
+            case 1:
+                return -__kernel_sin(y[0],y[1],1);
+            case 2:
+                return -__kernel_cos(y[0],y[1]);
+            default:
+                return  __kernel_sin(y[0],y[1],1);
+        }
+    }
+}
+#if SUPPORT_LONG_DOUBLE
+#if (LDBL_MANT_DIG == 53)
+__weak_reference(cos, cosl);
+#endif
+#endif