]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix FSINCOS in non-softfloat mode
authorToni Wilen <twilen@winuae.net>
Sat, 8 May 2021 17:29:41 +0000 (20:29 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 8 May 2021 17:29:41 +0000 (20:29 +0300)
fpp_native.cpp
fpp_softfloat.cpp
od-win32/fpp_native_msvc_80bit.cpp

index 303cb10d91a92a1106a2264151d67b1e3370025b..6ed472ebe4f24ca2a1b6145e7d986b9c0bf69539 100644 (file)
@@ -916,6 +916,16 @@ static void fp_cos(fpdata *a, fpdata *b)
        fp_reset_normal_prec();
        fp_round(a);
 }
+static void fp_sincos(fpdata *a, fpdata *b, fpdata *c)
+{
+       fp_normal_prec();
+       a->fp = cosl(b->fp);
+       c->fp = sinl(b->fp);
+       fp_reset_normal_prec();
+       fp_round(a);
+       fp_round(c);
+}
+
 static void fp_sub(fpdata *a, fpdata *b, int prec)
 {
        fp_set_prec(prec);
@@ -1341,6 +1351,7 @@ void fp_init_native(void)
        fpp_neg = fp_neg;
        fpp_acos = fp_acos;
        fpp_cos = fp_cos;
+       fpp_sincos = fp_sincos;
        fpp_getexp = fp_getexp;
        fpp_getman = fp_getman;
        fpp_div = fp_div;
index f1253bb6d44a61da5e16c4db8e7ac8644db796bc..ea58bc150aedafefb951a6b851647801650d4094 100644 (file)
@@ -511,7 +511,7 @@ static void fp_cos(fpdata *a, fpdata *b)
 {
     a->fpx = floatx80_cos(b->fpx, &fs);
 }
-static void fp_sincos(fpdata * a, fpdata * b, fpdata * c)
+static void fp_sincos(fpdata *a, fpdata *b, fpdata *c)
 {
        a->fpx = floatx80_sincos(b->fpx, &c->fpx, &fs);
 }
index 80bfcc0f35f38d0e92d8bf60bf6a8fc63020de45..d36f0775c0c5817732f420db5d5cb9c4437042dd 100644 (file)
@@ -676,6 +676,13 @@ static void fp_acos(fpdata *a, fpdata *b)
        xfp_acos(&a->rfp, &b->rfp);
        xfp_resetnormal(a);
 }
+static void fp_sincos(fpdata *a, fpdata *b, fpdata *c)
+{
+       xfp_setnormal();
+       xfp_cos(&a->rfp, &b->rfp);
+       xfp_sin(&c->rfp, &b->rfp);
+       xfp_resetnormal(a);
+}
 
 static void fp_intrz(fpdata *a, fpdata *b)
 {
@@ -1109,6 +1116,7 @@ void fp_init_native_80(void)
        fpp_neg = fp_neg;
        fpp_acos = fp_acos;
        fpp_cos = fp_cos;
+       fpp_sincos = fp_sincos;
        fpp_getexp = fp_getexp;
        fpp_getman = fp_getman;
        fpp_div = fp_div;