Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/arm-optimized-routines/math/test/rtest/intern.h
48375 views
1
/*
2
* intern.h
3
*
4
* Copyright (c) 1999-2019, Arm Limited.
5
* SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
6
*/
7
8
#ifndef mathtest_intern_h
9
#define mathtest_intern_h
10
11
#include <mpfr.h>
12
#include <mpc.h>
13
14
#include "types.h"
15
#include "wrappers.h"
16
17
/* Generic function pointer. */
18
typedef void (*funcptr)(void);
19
20
/* Pointers to test function types. */
21
typedef int (*testfunc1)(mpfr_t, mpfr_t, mpfr_rnd_t);
22
typedef int (*testfunc2)(mpfr_t, mpfr_t, mpfr_t, mpfr_rnd_t);
23
typedef int (*testrred)(mpfr_t, mpfr_t, int *);
24
typedef char * (*testsemi1)(uint32 *, uint32 *);
25
typedef char * (*testsemi2)(uint32 *, uint32 *, uint32 *);
26
typedef char * (*testsemi2f)(uint32 *, uint32 *, uint32 *);
27
typedef char * (*testldexp)(uint32 *, uint32 *, uint32 *);
28
typedef char * (*testfrexp)(uint32 *, uint32 *, uint32 *);
29
typedef char * (*testmodf)(uint32 *, uint32 *, uint32 *);
30
typedef char * (*testclassify)(uint32 *, uint32 *);
31
typedef char * (*testclassifyf)(uint32 *, uint32 *);
32
33
typedef int (*testfunc1c)(mpc_t, mpc_t, mpc_rnd_t);
34
typedef int (*testfunc2c)(mpc_t, mpc_t, mpc_t, mpc_rnd_t);
35
36
typedef int (*testfunc1cr)(mpfr_t, mpc_t, mpfr_rnd_t);
37
38
/* Pointer to a function that generates random test cases. */
39
typedef void (*casegen)(uint32 *, uint32, uint32);
40
41
/*
42
* List of testable functions, their types, and their testable range.
43
*/
44
enum {
45
args1, /* afloat-based, one argument */
46
args1f, /* same as args1 but in single prec */
47
args2, /* afloat-based, two arguments */
48
args2f, /* same as args2 but in single prec */
49
rred, /* afloat-based, one arg, aux return */
50
rredf, /* same as rred but in single prec */
51
semi1, /* seminumerical, one argument */
52
semi1f, /* seminumerical, 1 arg, float */
53
semi2, /* seminumerical, two arguments */
54
semi2f, /* seminumerical, 2 args, floats */
55
t_ldexp, /* dbl * int -> dbl */
56
t_ldexpf, /* sgl * int -> sgl */
57
t_frexp, /* dbl -> dbl * int */
58
t_frexpf, /* sgl -> sgl * int */
59
t_modf, /* dbl -> dbl * dbl */
60
t_modff, /* sgl -> sgl * sgl */
61
classify, /* classify double: dbl -> int */
62
classifyf, /* classify float: flt -> int */
63
compare, /* compare doubles, returns int */
64
comparef, /* compare floats, returns int */
65
66
args1c, /* acomplex-base, one argument */
67
args2c,
68
args1fc,
69
args2fc,
70
args1cr, /* dbl-complex -> complex */
71
args1fcr /* sgl-complex -> complex */
72
};
73
74
typedef struct __testable Testable;
75
struct __testable {
76
char *name;
77
funcptr func;
78
int type;
79
wrapperfunc wrappers[MAXWRAPPERS];
80
casegen cases; /* complex functions use the same casegen for both real and complex args */
81
uint32 caseparam1, caseparam2;
82
};
83
84
extern Testable functions[];
85
extern const int nfunctions;
86
87
extern void init_pi(void);
88
89
int nargs_(Testable* f);
90
91
#endif
92
93