/usr/include/libreoffice/sal/mathconf.h is in libreoffice-dev 1:5.1.2-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_SAL_MATHCONF_H
#define INCLUDED_SAL_MATHCONF_H
#include <osl/endian.h>
#include <float.h>
#if defined SOLARIS
#include <ieeefp.h>
#endif /* SOLARIS */
#if defined(__cplusplus) && ( defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L )
#include <cmath>
#endif
#if defined(IOS)
#if defined(__cplusplus)
#include <cmath>
#else
#include <math.h>
#endif
#endif
#if defined __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Generally, the C standard guarantees that at program startup, "trapping or
stopping (if supported) is disabled on all [floating-point] exceptions"
(F.7.3/1 of the August 3, 1998 draft of C99), and that during program
execution, "a programmer can safely assume default modes (or be unaware of
them)" (7.6/2, footnote 161 of the August 3, 1998 draft of C99). Reportedly,
on Windows there are printer drivers that switch on exceptions. To avoid
problems, the SAL_MATH_FPEXCEPTIONS_OFF macro can be used to explicitly
switch off exceptions (on Windows).
*/
#if defined WNT
#define SAL_MATH_FPEXCEPTIONS_OFF() _control87( _MCW_EM, _MCW_EM )
#else /* WNT */
#define SAL_MATH_FPEXCEPTIONS_OFF()
#endif /* WNT */
/* SAL_MATH_FINITE(d): test double d on INFINITY, NaN et al. */
#if !defined SOLARIS && !defined ANDROID \
&& defined(__cplusplus) \
&& ( defined(__GXX_EXPERIMENTAL_CXX0X__) \
|| __cplusplus >= 201103L \
|| defined(IOS) )
#define SAL_MATH_FINITE(d) std::isfinite(d)
#elif defined( IOS )
#define SAL_MATH_FINITE(d) isfinite(d)
#elif defined( WNT)
#define SAL_MATH_FINITE(d) _finite(d)
#elif defined(ANDROID) || defined LINUX || defined UNX
#define SAL_MATH_FINITE(d) finite(d)
#else /* WNT, LINUX, UNX */
#error "SAL_MATH_FINITE not defined"
#endif /* WNT, LINUX, UNX */
/* This needs to be fixed for non--IEEE-754 platforms: */
#if 1 /* IEEE 754 supported */
#if defined OSL_BIGENDIAN
/* IEEE 754 double structures for BigEndian */
union sal_math_Double
{
struct
{
unsigned sign : 1;
unsigned exponent :11;
unsigned fraction_hi :20;
unsigned fraction_lo :32;
} inf_parts;
struct
{
unsigned sign : 1;
unsigned exponent :11;
unsigned qnan_bit : 1;
unsigned bits :19;
unsigned fraction_lo :32;
} nan_parts;
struct
{
unsigned msw :32;
unsigned lsw :32;
} w32_parts;
double value;
};
#elif defined OSL_LITENDIAN
/* IEEE 754 double structures for LittleEndian */
union sal_math_Double
{
struct {
unsigned fraction_lo :32;
unsigned fraction_hi :20;
unsigned exponent :11;
unsigned sign : 1;
} inf_parts;
struct {
unsigned fraction_lo :32;
unsigned bits :19;
unsigned qnan_bit : 1;
unsigned exponent :11;
unsigned sign : 1;
} nan_parts;
struct
{
unsigned lsw :32;
unsigned msw :32;
} w32_parts;
double value;
};
#else /* OSL_BIGENDIAN, OSL_LITENDIAN */
#error "neither OSL_BIGENDIAN nor OSL_LITENDIAN"
#endif /* OSL_BIGENDIAN, OSL_LITENDIAN */
#else /* IEEE 754 supported */
#error "don't know how to handle IEEE 754"
#endif /* IEEE 754 supported */
#if defined __cplusplus
}
#endif /* __cplusplus */
#endif /* INCLUDED_SAL_MATHCONF_H */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|