On Mon, Oct 10, 2016 at 12:29:32PM -0700, Jerry DeLisle wrote: > On 10/10/2016 08:06 AM, Fritz Reese wrote: > > https://gcc.gnu.org/ml/fortran/2016-09/msg00163.html [original] > > https://gcc.gnu.org/ml/fortran/2016-09/msg00183.html [latest] > > > > On Wed, Sep 28, 2016 at 4:14 PM, Fritz Reese <fritzore...@gmail.com> wrote: > >> Attached is a patch extending the GNU Fortran front-end to support > >> some additional math intrinsics, enabled with a new compile flag > >> -fdec-math. The flag adds the COTAN intrinsic (cotangent), as well as > >> degree versions of all trigonometric intrinsics (SIND, TAND, ACOSD, > >> etc...). This extension allows for further compatibility with legacy > >> code that depends on the compiler to support such intrinsic functions. > > > > Patch is still pending. Current draft of the patch is re-attached for > > convenience, since it was amended twice since the original post. OK > > for trunk? > > > > OK, thanks for the work. >
Sorry about following behind. I did intend to review the patch, but time got away from me. There are a few small clean-up that can be done. For example, +static gfc_expr * +get_radians (gfc_expr *deg) +{ + mpfr_t tmp; ... + /* Set factor = pi / 180. */ + factor = gfc_get_constant_expr (deg->ts.type, deg->ts.kind, °->where); + mpfr_const_pi (factor->value.real, GFC_RND_MODE); + mpfr_init (tmp); + mpfr_set_d (tmp, 180.0, GFC_RND_MODE); + mpfr_div (factor->value.real, factor->value.real, tmp, GFC_RND_MODE); + mpfr_clear (tmp); the tmp variable is unneeded in the above. Converting the double precision 180.0 to mpfr_t and then dividing is probably slower than just dividing by 180. + /* Set factor = pi / 180. */ + factor = gfc_get_constant_expr (deg->ts.type, deg->ts.kind, °->where); + mpfr_const_pi (factor->value.real, GFC_RND_MODE); + mpfr_div_ui (factor->value.real, factor->value.real, 180, GFC_RND_MODE); Of course, the clean-up can be done post-commit by Fritz. -- Steve