~mingw-w64/mingw-w64/experimental

« back to all changes in this revision

Viewing changes to ros-privexp/mingw-w64-crt/math/acosf.c

  • Committer: NightStrike
  • Date: 2010-08-11 22:20:57 UTC
  • Revision ID: svn-v4:4407c894-4637-0410-b4f5-ada5f102cad1:experimental:3266
Branch for adding option for supporting ros

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 * This file has no copyright assigned and is placed in the Public Domain.
 
3
 * This file is part of the w64 mingw-runtime package.
 
4
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 
5
 */
 
6
/*
 
7
 * Written by J.T. Conklin <jtc@netbsd.org>.
 
8
 * Public domain.
 
9
 */
 
10
 
 
11
#include <math.h>
 
12
 
 
13
float
 
14
acosf (float x)
 
15
{
 
16
  float res = 0.0F;
 
17
 
 
18
  /* acosl = atanl (sqrtl(1 - x^2) / x) */
 
19
  asm ( "fld    %%st\n\t"
 
20
        "fmul   %%st(0)\n\t"            /* x^2 */
 
21
        "fld1\n\t"
 
22
        "fsubp\n\t"                     /* 1 - x^2 */
 
23
        "fsqrt\n\t"                     /* sqrtl (1 - x^2) */
 
24
        "fxch   %%st(1)\n\t"
 
25
        "fpatan"
 
26
        : "=t" (res) : "0" (x) : "st(1)");
 
27
  return res;
 
28
}