9#ifndef FORTRAN_RUNTIME_FLOAT128MATH_NUMERIC_TEMPLATE_SPECS_H_
10#define FORTRAN_RUNTIME_FLOAT128MATH_NUMERIC_TEMPLATE_SPECS_H_
12#include "math-entries.h"
13#include "numeric-templates.h"
15namespace Fortran::runtime {
16using F128Type = CppTypeFor<TypeCategory::Real, 16>;
18template <>
struct ABSTy<F128Type> {
19 static F128Type compute(F128Type x) {
return Abs<true>::invoke(x); }
23 static F128Type compute(F128Type x,
int *e) {
24 return Frexp<true>::invoke(x, e);
29 static int compute(F128Type x) {
return Ilogb<true>::invoke(x); }
33 static bool compute(F128Type x) {
return Isinf<true>::invoke(x); }
37 static bool compute(F128Type x) {
return Isnan<true>::invoke(x); }
41 template <
typename ET>
static F128Type compute(F128Type x, ET p) {
42 return Ldexp<true>::invoke(x, p);
47 static F128Type compute() {
return F128_RT_QNAN; }
51 static F128Type compute(F128Type x) {
return Sqrt<true>::invoke(x); }
Definition: numeric-templates.h:126
Definition: numeric-templates.h:135
Definition: numeric-templates.h:143
Definition: numeric-templates.h:147
Definition: numeric-templates.h:151
Definition: numeric-templates.h:155
Definition: numeric-templates.h:179
Definition: numeric-templates.h:185