mirror of
https://github.com/boostorg/histogram.git
synced 2025-05-09 23:04:07 +00:00
update copyright (#55)
* add missing copyright notices * workaround for xml_iarchive bug to handle XML with comments * fixing min/max according to boost guidelines
This commit is contained in:
parent
6df7625740
commit
df647cf959
@ -1,10 +1,10 @@
|
||||
# Copyright Hans Dembinski 2019.
|
||||
#
|
||||
# Use, modification, and distribution are
|
||||
# subject to the Boost Software License, Version 1.0. (See accompanying
|
||||
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
#
|
||||
# Copyright Hans Dembinski 2019.
|
||||
#
|
||||
# Based on original work by Antony Polukhin, see https://svn.boost.org/trac/boost/wiki/TravisCoveralss
|
||||
# Based on original work by Antony Polukhin, see https://svn.boost.org/trac/boost/wiki/TravisCoverals
|
||||
|
||||
language: cpp
|
||||
os: linux
|
||||
|
@ -1,8 +1,8 @@
|
||||
# Copyright 2018-2019 Peter Dimov, Hans Dembinski
|
||||
# Copyright Peter Dimov, Hans Dembinski 2018-2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
# Beware: Boost-CMake support is experimental; testing works, install target doesn't
|
||||
# Warning: Boost-CMake support is incomplete; testing works, install target doesn't
|
||||
|
||||
cmake_minimum_required(VERSION 3.6)
|
||||
|
||||
|
2
Jamfile
2
Jamfile
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2018 Mateusz Loskot <mateusz@loskot.net>
|
||||
# Copyright Mateusz Loskot 2018 <mateusz@loskot.net>
|
||||
# Copyright Klemens David Morgenstern, Hans P. Dembinski 2016-2017
|
||||
#
|
||||
# Use, modification and distribution is subject to the Boost Software License,
|
||||
|
@ -1,3 +1,10 @@
|
||||
<!--
|
||||
Copyright Hans Dembinski 2016 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
# Histogram
|
||||
|
||||
**Fast multi-dimensional histogram with convenient interface for C++14**
|
||||
|
@ -1,2 +1,7 @@
|
||||
#/bin/bash
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright Hans Dembinski 2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
for cpu in /sys/devices/system/cpu/cpu? ; do echo performance > $cpu/cpufreq/scaling_governor; done
|
||||
|
@ -1,2 +1,7 @@
|
||||
#/bin/bash
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright Hans Dembinski 2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
for cpu in /sys/devices/system/cpu/cpu? ; do echo powersave > $cpu/cpufreq/scaling_governor; done
|
||||
|
@ -59,8 +59,8 @@ void fill_c(const Axes& axes, const std::size_t* strides, Storage& storage,
|
||||
const Tuple& t) {
|
||||
using namespace boost::mp11;
|
||||
std::size_t index = 0;
|
||||
assert(boost::histogram::detail::axes_rank(axes) ==
|
||||
boost::histogram::detail::axes_rank(t));
|
||||
BOOST_ASSERT(boost::histogram::detail::axes_rank(axes) ==
|
||||
boost::histogram::detail::axes_rank(t));
|
||||
mp_for_each<mp_iota<mp_size<Tuple>>>([&](auto i) {
|
||||
const auto& a = boost::histogram::detail::axis_get<i>(axes);
|
||||
const auto& v = std::get<i>(t);
|
||||
@ -137,9 +137,9 @@ static void fill_2d_c(benchmark::State& state) {
|
||||
generator<Distribution> gen;
|
||||
auto storage = make_storage<T>(axes);
|
||||
auto strides = make_strides(axes);
|
||||
assert(strides.size() == 3);
|
||||
assert(strides[0] == 1);
|
||||
assert(strides[1] == 102);
|
||||
BOOST_ASSERT(strides.size() == 3);
|
||||
BOOST_ASSERT(strides[0] == 1);
|
||||
BOOST_ASSERT(strides[1] == 102);
|
||||
for (auto _ : state) {
|
||||
fill_c(axes, strides.data(), storage, std::forward_as_tuple(gen(), gen()));
|
||||
}
|
||||
@ -151,9 +151,9 @@ static void fill_2d_c_dyn(benchmark::State& state) {
|
||||
generator<Distribution> gen;
|
||||
auto storage = make_storage<T>(axes);
|
||||
auto strides = make_strides(axes);
|
||||
assert(strides.size() == 3);
|
||||
assert(strides[0] == 1);
|
||||
assert(strides[1] == 102);
|
||||
BOOST_ASSERT(strides.size() == 3);
|
||||
BOOST_ASSERT(strides[0] == 1);
|
||||
BOOST_ASSERT(strides[1] == 102);
|
||||
for (auto _ : state) {
|
||||
fill_c(axes, strides.data(), storage, std::forward_as_tuple(gen(), gen()));
|
||||
}
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright Hans Dembinski 2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
from matplotlib import pyplot as plt, lines
|
||||
import shelve
|
||||
import json
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright Hans Dembinski 2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
"""
|
||||
Run this from a special build directory that uses the benchmark folder as root
|
||||
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:benchmarks Benchmarks]
|
||||
|
||||
The library is designed to be fast. When configured correctly, it is one of the fastest libraries on the market. If you find a library that is faster than Boost.Histogram, please submit an issue on Github. We care about performance.
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:history Revision history]
|
||||
|
||||
[heading Boost 1.71]
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:concepts Concepts]
|
||||
|
||||
Users can extend the library with various new types whose concepts are defined here.
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:Accumulator Accumulator]
|
||||
|
||||
An [*Accumulator] is a functor which consumes the argument to update some internal state. The state can be read with member functions or free functions. Must be [@https://en.cppreference.com/w/cpp/named_req/DefaultConstructible DefaultConstructible], [@https://en.cppreference.com/w/cpp/named_req/CopyConstructible CopyConstructible], and [@https://en.cppreference.com/w/cpp/named_req/CopyAssignable CopyAssignable].
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:Axis Axis]
|
||||
|
||||
An [*Axis] maps input values to indices. It holds state specific to that axis, like the number of bins and any metadata. Must be [@https://en.cppreference.com/w/cpp/named_req/CopyConstructible CopyConstructible], [@https://en.cppreference.com/w/cpp/named_req/CopyAssignable CopyAssignable], and *nothrow* [@https://en.cppreference.com/w/cpp/named_req/MoveAssignable MoveAssignable].
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:DiscreteAxis DiscreteAxis]
|
||||
|
||||
A [*DiscreteAxis] is one of two optional refinements of the [link histogram.concepts.Axis [*Axis]] concept, the other one is the [link histogram.concepts.IntervalAxis IntervalAxis]. This concept is for values that do not form intervals, and for axes with intervals that contain exactly one value.
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:IntervalAxis IntervalAxis]
|
||||
|
||||
A [*IntervalAxis] is one of two optional refinements of the [link histogram.concepts.Axis [*Axis]] concept, the other one is the [link histogram.concepts.DiscreteAxis DiscreteAxis]. It is for ordered values that form intervals with a well-defined lower and upper edge, and a center. Each bin represents an interval of values.
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:Storage Storage]
|
||||
|
||||
A [*Storage] handles memory for the bin counters and provides a uniform vector-like interface for accessing cell values for reading and writing. Must be [@https://en.cppreference.com/w/cpp/named_req/DefaultConstructible DefaultConstructible], [@https://en.cppreference.com/w/cpp/named_req/CopyConstructible CopyConstructible], and [@https://en.cppreference.com/w/cpp/named_req/CopyAssignable CopyAssignable].
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:Transform Transform]
|
||||
|
||||
A [*Transform] implements a monotonic mapping between two real-valued domains, external and internal. It is used to extend the [classref boost::histogram::axis::regular regular axis]. The bins in the internal domain are of equal width, while the bins in the external domain are non-equal width. Must be [@https://en.cppreference.com/w/cpp/named_req/DefaultConstructible DefaultConstructible], [@https://en.cppreference.com/w/cpp/named_req/CopyConstructible CopyConstructible], and [@https://en.cppreference.com/w/cpp/named_req/CopyAssignable CopyAssignable].
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright Hans Dembinski 2018 - 2019.
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import xml.etree.ElementTree as ET
|
||||
|
@ -1,4 +1,10 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright Hans Dembinski 2018 - 2019.
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
import glob
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:getting_started Getting started]
|
||||
|
||||
Here are some commented examples to copy-paste from, this should allow you to kick off a project with Boost.Histogram. If you prefer a traditional structured exposition, go to the [link histogram.guide user guide].
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:guide User guide]
|
||||
|
||||
Boost.Histogram is designed to make simple things simple, yet complex things possible. Correspondingly, this guides covers the basic usage first, and the advanced usage in later sections. For an alternative quick start guide, have a look at the [link histogram.getting_started Getting started] section.
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2016 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[library Boost.Histogram
|
||||
[quickbook 1.6]
|
||||
[copyright 2016 - 2019 Hans Dembinski]
|
||||
|
@ -1,3 +1,10 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright Hans Dembinski 2018 - 2019.
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
import numpy as np
|
||||
import json
|
||||
from collections import defaultdict
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:overview Overview]
|
||||
|
||||
[section:introduction Introduction]
|
||||
|
@ -1,3 +1,10 @@
|
||||
[/
|
||||
Copyright Hans Dembinski 2018 - 2019.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
https://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:rationale Rationale]
|
||||
|
||||
[section:guidelines Guidelines]
|
||||
|
@ -206,7 +206,7 @@ decltype(auto) reduce(const Histogram& hist, const Iterable& options) {
|
||||
o_out.begin = o_in.begin;
|
||||
o_out.end = o_in.end;
|
||||
}
|
||||
o_out.merge = std::max(o_in.merge, o_out.merge);
|
||||
o_out.merge = (std::max)(o_in.merge, o_out.merge);
|
||||
}
|
||||
|
||||
// make new axes container with default-constructed axis instances
|
||||
@ -231,8 +231,8 @@ decltype(auto) reduce(const Histogram& hist, const Iterable& options) {
|
||||
[&o](auto&& aout, const auto& ain) {
|
||||
using A = std::decay_t<decltype(ain)>;
|
||||
if (o.indices_set) {
|
||||
o.begin = std::max(0, o.begin);
|
||||
o.end = std::min(o.end, ain.size());
|
||||
o.begin = (std::max)(0, o.begin);
|
||||
o.end = (std::min)(o.end, ain.size());
|
||||
} else {
|
||||
o.begin = 0;
|
||||
o.end = ain.size();
|
||||
|
@ -152,13 +152,13 @@ public:
|
||||
if (0 <= i) {
|
||||
if (i < size()) return std::make_pair(i, 0);
|
||||
const auto d = value(size()) - value(size() - 0.5);
|
||||
x = std::nextafter(x, std::numeric_limits<value_type>::max());
|
||||
x = std::max(x, vec.back() + d);
|
||||
x = std::nextafter(x, (std::numeric_limits<value_type>::max)());
|
||||
x = (std::max)(x, vec.back() + d);
|
||||
vec.push_back(x);
|
||||
return std::make_pair(i, -1);
|
||||
}
|
||||
const auto d = value(0.5) - value(0);
|
||||
x = std::min(x, value(0) - d);
|
||||
x = (std::min)(x, value(0) - d);
|
||||
vec.insert(vec.begin(), x);
|
||||
return std::make_pair(0, -i);
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ using is_unsigned_integral = mp11::mp_and<std::is_integral<T>, std::is_unsigned<
|
||||
|
||||
template <class T>
|
||||
bool safe_increment(T& t) {
|
||||
if (t < std::numeric_limits<T>::max()) {
|
||||
if (t < (std::numeric_limits<T>::max)()) {
|
||||
++t;
|
||||
return true;
|
||||
}
|
||||
@ -41,7 +41,7 @@ template <class T, class U>
|
||||
bool safe_radd(T& t, const U& u) {
|
||||
static_assert(is_unsigned_integral<T>::value, "T must be unsigned integral type");
|
||||
static_assert(is_unsigned_integral<U>::value, "T must be unsigned integral type");
|
||||
if (static_cast<T>(std::numeric_limits<T>::max() - t) >= u) {
|
||||
if (static_cast<T>((std::numeric_limits<T>::max)() - t) >= u) {
|
||||
t += static_cast<T>(u); // static_cast to suppress conversion warning
|
||||
return true;
|
||||
}
|
||||
@ -212,7 +212,7 @@ struct large_int : totally_ordered<large_int<Allocator>, large_int<Allocator>>,
|
||||
// in decimal system it would look like this:
|
||||
// 8 + 8 = 6 = 8 - (9 - 8) - 1
|
||||
// 9 + 1 = 0 = 9 - (9 - 1) - 1
|
||||
auto tmp = std::numeric_limits<std::uint64_t>::max();
|
||||
auto tmp = (std::numeric_limits<std::uint64_t>::max)();
|
||||
tmp -= o;
|
||||
--d -= tmp;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ constexpr float lowest() {
|
||||
|
||||
template <typename T>
|
||||
constexpr T highest() {
|
||||
return std::numeric_limits<T>::max();
|
||||
return (std::numeric_limits<T>::max)();
|
||||
}
|
||||
|
||||
template <>
|
||||
|
@ -185,7 +185,7 @@ void grow_storage(const A& axes, S& storage, const axis::index_type* shifts) {
|
||||
}
|
||||
// we are in a normal bin:
|
||||
// move storage pointer to index position, apply positive shifts
|
||||
ns += (dit->idx + std::max(*sit, 0)) * dit->new_stride;
|
||||
ns += (dit->idx + (std::max)(*sit, 0)) * dit->new_stride;
|
||||
++dit;
|
||||
++sit;
|
||||
});
|
||||
|
@ -55,7 +55,7 @@ struct vector_impl : T {
|
||||
using value_type = typename T::value_type;
|
||||
const auto old_size = T::size();
|
||||
T::resize(n, value_type());
|
||||
std::fill_n(T::begin(), std::min(n, old_size), value_type());
|
||||
std::fill_n(T::begin(), (std::min)(n, old_size), value_type());
|
||||
}
|
||||
}; // namespace detail
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright 2019 Hans Dembinski
|
||||
# Copyright Hans Dembinski 2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
|
@ -61,8 +61,8 @@ int main() {
|
||||
// axis::integer with int type
|
||||
{
|
||||
axis::integer<int> a{-1, 2};
|
||||
BOOST_TEST_EQ(a.bin(-2), std::numeric_limits<int>::min());
|
||||
BOOST_TEST_EQ(a.bin(4), std::numeric_limits<int>::max());
|
||||
BOOST_TEST_EQ(a.bin(-2), (std::numeric_limits<int>::min)());
|
||||
BOOST_TEST_EQ(a.bin(4), (std::numeric_limits<int>::max)());
|
||||
BOOST_TEST_EQ(a.index(-10), -1);
|
||||
BOOST_TEST_EQ(a.index(-2), -1);
|
||||
BOOST_TEST_EQ(a.index(-1), 0);
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -3,7 +3,6 @@
|
||||
// Copyright 2018 Peter Dimov
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
//
|
||||
// See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
@ -11,17 +10,16 @@
|
||||
#include <boost/version.hpp>
|
||||
#include <cstdio>
|
||||
|
||||
int main( int ac, char const* av[] )
|
||||
{
|
||||
BOOST_TEST_EQ( ac, 2 );
|
||||
int main(int ac, char const* av[]) {
|
||||
BOOST_TEST_EQ(ac, 2);
|
||||
|
||||
if( ac >= 2 )
|
||||
{
|
||||
char version[ 64 ];
|
||||
std::sprintf( version, "%d.%d.%d", BOOST_VERSION / 100000, BOOST_VERSION / 100 % 1000, BOOST_VERSION % 100 );
|
||||
if (ac >= 2) {
|
||||
char version[64];
|
||||
std::sprintf(version, "%d.%d.%d", BOOST_VERSION / 100000, BOOST_VERSION / 100 % 1000,
|
||||
BOOST_VERSION % 100);
|
||||
|
||||
BOOST_TEST_CSTR_EQ( av[1], version );
|
||||
}
|
||||
BOOST_TEST_CSTR_EQ(av[1], version);
|
||||
}
|
||||
|
||||
return boost::report_errors();
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ int main() {
|
||||
// bincount overflow
|
||||
{
|
||||
auto v = std::vector<axis::integer<>>(
|
||||
100, axis::integer<>(0, std::numeric_limits<int>::max() - 2));
|
||||
100, axis::integer<>(0, (std::numeric_limits<int>::max)() - 2));
|
||||
BOOST_TEST_THROWS(detail::bincount(v), std::overflow_error);
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,7 @@ int main() {
|
||||
BOOST_TEST_EQ(c, 255);
|
||||
}
|
||||
|
||||
const auto vmax = std::numeric_limits<std::uint64_t>::max();
|
||||
const auto vmax = (std::numeric_limits<std::uint64_t>::max)();
|
||||
|
||||
// ctors, assign
|
||||
{
|
||||
|
@ -12,11 +12,11 @@ using namespace boost::histogram::detail;
|
||||
|
||||
int main() {
|
||||
|
||||
BOOST_TEST_EQ(lowest<int>(), std::numeric_limits<int>::min());
|
||||
BOOST_TEST_EQ(lowest<int>(), (std::numeric_limits<int>::min)());
|
||||
BOOST_TEST_EQ(lowest<float>(), -std::numeric_limits<float>::infinity());
|
||||
BOOST_TEST_EQ(lowest<double>(), -std::numeric_limits<double>::infinity());
|
||||
|
||||
BOOST_TEST_EQ(highest<int>(), std::numeric_limits<int>::max());
|
||||
BOOST_TEST_EQ(highest<int>(), (std::numeric_limits<int>::max)());
|
||||
BOOST_TEST_EQ(highest<float>(), std::numeric_limits<float>::infinity());
|
||||
BOOST_TEST_EQ(highest<double>(), std::numeric_limits<double>::infinity());
|
||||
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
const auto x = std::get<0>(xy);
|
||||
const auto y = std::get<1>(xy);
|
||||
const auto r = std::sqrt(x * x + y * y);
|
||||
return std::min(static_cast<axis::index_type>(r), size());
|
||||
return (std::min)(static_cast<axis::index_type>(r), size());
|
||||
}
|
||||
|
||||
auto update(std::tuple<double, double> xy) {
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -1,3 +1,11 @@
|
||||
<!--
|
||||
Copyright 2018-2019 Hans Dembinski
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt
|
||||
or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<!DOCTYPE boost_serialization>
|
||||
<boost_serialization signature="serialization::archive" version="17">
|
||||
|
@ -49,13 +49,13 @@ unlimited_storage_type prepare(std::size_t n, T x = T{}) {
|
||||
}
|
||||
|
||||
template <class T>
|
||||
auto max() {
|
||||
return std::numeric_limits<T>::max();
|
||||
auto limits_max() {
|
||||
return (std::numeric_limits<T>::max)();
|
||||
}
|
||||
|
||||
template <>
|
||||
inline auto max<large_int>() {
|
||||
return large_int(std::numeric_limits<uint64_t>::max());
|
||||
inline auto limits_max<large_int>() {
|
||||
return large_int(limits_max<uint64_t>());
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
@ -97,7 +97,7 @@ void equal_2() {
|
||||
|
||||
template <typename T>
|
||||
void increase_and_grow() {
|
||||
auto tmax = max<T>();
|
||||
auto tmax = limits_max<T>();
|
||||
auto s = prepare(2, tmax);
|
||||
auto n = s;
|
||||
auto n2 = s;
|
||||
@ -205,7 +205,7 @@ struct adder {
|
||||
// LHS is never downgraded, only upgraded to RHS.
|
||||
// If RHS is normal integer, LHS doesn't change.
|
||||
BOOST_TEST_EQ(unsafe_access::unlimited_storage_buffer(a).type,
|
||||
iRHS < 4 ? iLHS : std::max(iLHS, iRHS));
|
||||
iRHS < 4 ? iLHS : (std::max)(iLHS, iRHS));
|
||||
BOOST_TEST_EQ(a[0], 2);
|
||||
}
|
||||
{
|
||||
@ -224,7 +224,7 @@ struct adder {
|
||||
// If RHS is normal integer, LHS doesn't change.
|
||||
a[0] += b[0];
|
||||
BOOST_TEST_EQ(unsafe_access::unlimited_storage_buffer(a).type,
|
||||
iRHS < 4 ? iLHS : std::max(iLHS, iRHS));
|
||||
iRHS < 4 ? iLHS : (std::max)(iLHS, iRHS));
|
||||
BOOST_TEST_EQ(a[0], 2);
|
||||
a[0] -= b[0];
|
||||
BOOST_TEST_EQ(a[0], 0);
|
||||
@ -233,17 +233,17 @@ struct adder {
|
||||
}
|
||||
{
|
||||
auto a = prepare<LHS>(1);
|
||||
auto b = max<RHS>();
|
||||
auto b = limits_max<RHS>();
|
||||
// LHS is never downgraded, only upgraded to RHS.
|
||||
// If RHS is normal integer, LHS doesn't change.
|
||||
a[0] += b;
|
||||
// BOOST_TEST_EQ(unsafe_access::unlimited_storage_buffer(a).type,
|
||||
// iRHS < 4 ? iLHS : std::max(iLHS, iRHS));
|
||||
BOOST_TEST_EQ(a[0], max<RHS>());
|
||||
BOOST_TEST_EQ(a[0], limits_max<RHS>());
|
||||
a[0] += prepare<RHS>(1, b)[0];
|
||||
// BOOST_TEST_EQ(unsafe_access::unlimited_storage_buffer(a).type,
|
||||
// iRHS < 4 ? iLHS + 1 : std::max(iLHS, iRHS));
|
||||
BOOST_TEST_EQ(a[0], 2 * double(max<RHS>()));
|
||||
BOOST_TEST_EQ(a[0], 2 * double(limits_max<RHS>()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -471,7 +471,7 @@ int main() {
|
||||
|
||||
// test failure in buffer.make<large_int>(n, iter), AT::construct
|
||||
s.reset(3);
|
||||
s[1] = std::numeric_limits<std::uint64_t>::max();
|
||||
s[1] = (std::numeric_limits<std::uint64_t>::max)();
|
||||
db.failure_countdown = 2;
|
||||
const auto old_ptr = buffer.ptr;
|
||||
BOOST_TEST_THROWS(++s[1], std::bad_alloc);
|
||||
|
@ -9,8 +9,8 @@
|
||||
|
||||
#include <boost/archive/xml_iarchive.hpp>
|
||||
#include <boost/archive/xml_oarchive.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <cassert>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
@ -30,7 +30,13 @@ std::string join(const char* a, const char* b) {
|
||||
template <class T>
|
||||
void load_xml(const std::string& filename, T& t) {
|
||||
std::ifstream ifs(filename);
|
||||
assert(ifs.is_open());
|
||||
BOOST_ASSERT(ifs.is_open());
|
||||
// manually skip XML comments at the beginning of the stream, because of
|
||||
// https://github.com/boostorg/serialization/issues/169
|
||||
char line[128];
|
||||
do {
|
||||
ifs.getline(line, 128);
|
||||
} while (!ifs.fail() && !ifs.eof() && std::strstr(line, "-->") == nullptr);
|
||||
boost::archive::xml_iarchive ia(ifs);
|
||||
ia >> boost::serialization::make_nvp("item", t);
|
||||
}
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright Hans Dembinski 2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
import sys
|
||||
from os.path import abspath, join
|
||||
import re
|
||||
@ -8,7 +13,7 @@ project_dir = "/".join(abspath(__file__).split("/")[:-2])
|
||||
|
||||
filename = abspath(sys.argv[1])
|
||||
|
||||
copyright = """// Copyright {} Hans Dembinski
|
||||
copyright = """// Copyright Hans Dembinski {}
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright Hans Dembinski 2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import glob
|
@ -1,5 +1,10 @@
|
||||
#!/bin/sh
|
||||
# must be executed in project root folder
|
||||
|
||||
# Copyright Hans Dembinski 2018-2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
if [ -z $GCOV ]; then
|
||||
for i in 9 8 5; do
|
||||
if test $(which gcov-$i); then
|
||||
|
@ -1,2 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright Hans Dembinski 2018-2019
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
exec llvm-cov gcov "$@"
|
||||
|
Loading…
x
Reference in New Issue
Block a user