TMB Documentation
v1.9.11
TMB
inst
include
tiny_ad
beta
d1mach.cpp
1
/*
2
* Mathlib - A Mathematical Function Library
3
* Copyright (C) 1998 Ross Ihaka
4
* Copyright (C) 2000-2014 The R Core Team
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, a copy is available at
18
* https://www.R-project.org/Licenses/
19
*/
20
21
/* NaNs propagated correctly */
22
23
24
/*-- FIXME: Eliminate calls to these
25
* ===== o from C code when
26
* o it is only used to initialize "static" variables (threading)
27
* and use the DBL_... constants instead
28
*/
29
30
#include "nmath.h"
31
32
template
<
class
T>
33
attribute_hidden
double
Rf_d1mach(T i)
34
{
35
switch
(i) {
36
case
1:
return
DBL_MIN;
37
case
2:
return
DBL_MAX;
38
39
case
3:
/* = FLT_RADIX ^ - DBL_MANT_DIG
40
for IEEE: = 2^-53 = 1.110223e-16 = .5*DBL_EPSILON */
41
return
0.5*DBL_EPSILON;
42
43
case
4:
/* = FLT_RADIX ^ (1- DBL_MANT_DIG) =
44
for IEEE: = 2^-52 = DBL_EPSILON */
45
return
DBL_EPSILON;
46
47
case
5:
return
M_LOG10_2;
48
49
default
:
return
0.0;
50
}
51
}
License:
GPL v2