]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgfortran/m4/norm2.m4
Update copyright years.
[thirdparty/gcc.git] / libgfortran / m4 / norm2.m4
CommitLineData
0cd0559e 1`/* Implementation of the NORM2 intrinsic
a945c346 2 Copyright (C) 2010-2024 Free Software Foundation, Inc.
0cd0559e
TB
3 Contributed by Tobias Burnus <burnus@net-b.de>
4
5This file is part of the GNU Fortran runtime library (libgfortran).
6
7Libgfortran is free software; you can redistribute it and/or
8modify it under the terms of the GNU General Public
9License as published by the Free Software Foundation; either
10version 3 of the License, or (at your option) any later version.
11
12Libgfortran is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17Under Section 7 of GPL version 3, you are granted additional
18permissions described in the GCC Runtime Library Exception, version
193.1, as published by the Free Software Foundation.
20
21You should have received a copy of the GNU General Public License and
22a copy of the GCC Runtime Library Exception along with this program;
23see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
24<http://www.gnu.org/licenses/>. */
25
e034421f 26#include "libgfortran.h"'
0cd0559e
TB
27
28include(iparm.m4)dnl
29include(ifunction.m4)dnl
30include(`mtype.m4')dnl
31
08fd13d4 32`#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`) && 'hasmathfunc(sqrt) && hasmathfunc(fabs)
0cd0559e 33
08fd13d4
FXC
34mathfunc_macro
35
36ARRAY_FUNCTION(0,
0cd0559e 37` 'rtype_name` scale;
08fd13d4
FXC
38 result = 0;
39 scale = 1;',
40` if (*src != 0)
0cd0559e
TB
41 {
42 'rtype_name` absX, val;
08fd13d4 43 absX = MATHFUNC(fabs) (*src);
0cd0559e
TB
44 if (scale < absX)
45 {
46 val = scale / absX;
08fd13d4 47 result = 1 + result * val * val;
0cd0559e
TB
48 scale = absX;
49 }
50 else
51 {
52 val = absX / scale;
53 result += val * val;
54 }
55 }',
08fd13d4 56` result = scale * MATHFUNC(sqrt) (result);')
0cd0559e
TB
57
58#endif