OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.18.0/] [newlib/] [libm/] [common/] [s_fma.c] - Blame information for rev 617

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 207 jeremybenn
/*
2
FUNCTION
3
<<fma>>, <<fmaf>>--floating multiply add
4
INDEX
5
        fma
6
INDEX
7
        fmaf
8
 
9
ANSI_SYNOPSIS
10
        #include <math.h>
11
        double fma(double <[x]>, double <[y]>, double <[z]>);
12
        float fmaf(float <[x]>, float <[y]>, float <[z]>);
13
 
14
DESCRIPTION
15
The <<fma>> functions compute (<[x]> * <[y]>) + <[z]>, rounded as one ternary
16
operation:  they compute the value (as if) to infinite precision and round once
17
to the result format, according to the rounding mode characterized by the value
18
of FLT_ROUNDS.  That is, they are supposed to do this:  see below.
19
 
20
RETURNS
21
The <<fma>> functions return (<[x]> * <[y]>) + <[z]>, rounded as one ternary
22
operation.
23
 
24
BUGS
25
This implementation does not provide the function that it should, purely
26
returning "(<[x]> * <[y]>) + <[z]>;" with no attempt at all to provide the
27
simulated infinite precision intermediates which are required.  DO NOT USE THEM.
28
 
29
If double has enough more precision than float, then <<fmaf>> should provide
30
the expected numeric results, as it does use double for the calculation.  But
31
since this is not the case for all platforms, this manual cannot determine
32
if it is so for your case.
33
 
34
PORTABILITY
35
ANSI C, POSIX.
36
 
37
*/
38
 
39
#include "fdlibm.h"
40
 
41
#ifndef _DOUBLE_IS_32BITS
42
 
43
#ifdef __STDC__
44
        double fma(double x, double y, double z)
45
#else
46
        double fma(x,y)
47
        double x;
48
        double y;
49
        double z;
50
#endif
51
{
52
  /* Implementation defined. */
53
  return (x * y) + z;
54
}
55
 
56
#endif /* _DOUBLE_IS_32BITS */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.