Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
d233c237
Commit
d233c237
authored
Mar 03, 2013
by
Ulrich Drepper
Committed by
Ulrich Drepper
Mar 03, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add math constants and triangular and von Mises distributions.
From-SVN: r196407
parent
4dc1d68c
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1430 additions
and
17 deletions
+1430
-17
libstdc++-v3/ChangeLog
+38
-0
libstdc++-v3/include/Makefile.am
+1
-0
libstdc++-v3/include/Makefile.in
+36
-7
libstdc++-v3/include/ext/cmath
+152
-0
libstdc++-v3/include/ext/random
+533
-10
libstdc++-v3/include/ext/random.tcc
+120
-0
libstdc++-v3/testsuite/ext/triangular_distribution/cons/default.cc
+44
-0
libstdc++-v3/testsuite/ext/triangular_distribution/cons/parms.cc
+44
-0
libstdc++-v3/testsuite/ext/triangular_distribution/operators/equal.cc
+42
-0
libstdc++-v3/testsuite/ext/triangular_distribution/operators/inequal.cc
+42
-0
libstdc++-v3/testsuite/ext/triangular_distribution/operators/serialize.cc
+44
-0
libstdc++-v3/testsuite/ext/triangular_distribution/requirements/explicit_instantiation/1.cc
+26
-0
libstdc++-v3/testsuite/ext/triangular_distribution/requirements/typedefs.cc
+34
-0
libstdc++-v3/testsuite/ext/von_mises_distribution/cons/default.cc
+43
-0
libstdc++-v3/testsuite/ext/von_mises_distribution/cons/parms.cc
+43
-0
libstdc++-v3/testsuite/ext/von_mises_distribution/operators/equal.cc
+42
-0
libstdc++-v3/testsuite/ext/von_mises_distribution/operators/inequal.cc
+42
-0
libstdc++-v3/testsuite/ext/von_mises_distribution/operators/serialize.cc
+44
-0
libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/explicit_instantiation/1.cc
+26
-0
libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/typedefs.cc
+34
-0
No files found.
libstdc++-v3/ChangeLog
View file @
d233c237
2013-03-02 Ulrich Drepper <drepper@gmail.com>
Add triangular and von Mises distributions.
* include/ext/random: Include <ext/cmath>.
Add __gnu_cxx::triangular_distribution<> and
__gnu_cxx::von_mises_distribution<> classes.
* include/ext/random.tcc: Add out-of-line functions for
__gnu_cxx::triangular_distribution<> and
__gnu_cxx::von_mises_distribution<>.
* testsuite/ext/triangular_distribution/cons/default.cc: New file.
* testsuite/ext/triangular_distribution/cons/parms.cc: New file.
* testsuite/ext/triangular_distribution/operators/serialize.cc:
New file.
* testsuite/ext/triangular_distribution/operators/equal.cc:
New file.
* testsuite/ext/triangular_distribution/operators/inequal.cc:
New file.
* testsuite/ext/triangular_distribution/requirements/typedefs.cc:
New file.
* testsuite/ext/triangular_distribution/requirements/
explicit_instantiation/1.cc: New file.
* testsuite/ext/von_mises_distribution/cons/default.cc: New file.
* testsuite/ext/von_mises_distribution/cons/parms.cc: New file.
* testsuite/ext/von_mises_distribution/operators/serialize.cc:
New file.
* testsuite/ext/von_mises_distribution/operators/equal.cc: New file.
* testsuite/ext/von_mises_distribution/operators/inequal.cc:
New file.
* testsuite/ext/von_mises_distribution/requirements/typedefs.cc:
New file.
* testsuite/ext/von_mises_distribution/requirements/
explicit_instantiation/1.cc: New file.
Add math constants.
* include/Makefile.am (ext_headers): Add cmath.
* include/Makefile.in: Regenerated.
* include/ext/cmath: New file.
2013-03-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2013-03-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config/abi/post/solaris2.9/baseline_symbols.txt: Regenerate.
* config/abi/post/solaris2.9/baseline_symbols.txt: Regenerate.
...
...
libstdc++-v3/include/Makefile.am
View file @
d233c237
...
@@ -499,6 +499,7 @@ ext_headers = \
...
@@ -499,6 +499,7 @@ ext_headers = \
${
ext_srcdir
}
/array_allocator.h
\
${
ext_srcdir
}
/array_allocator.h
\
${
ext_srcdir
}
/bitmap_allocator.h
\
${
ext_srcdir
}
/bitmap_allocator.h
\
${
ext_srcdir
}
/cast.h
\
${
ext_srcdir
}
/cast.h
\
${
ext_srcdir
}
/cmath
\
${
ext_srcdir
}
/codecvt_specializations.h
\
${
ext_srcdir
}
/codecvt_specializations.h
\
${
ext_srcdir
}
/concurrence.h
\
${
ext_srcdir
}
/concurrence.h
\
${
ext_srcdir
}
/debug_allocator.h
\
${
ext_srcdir
}
/debug_allocator.h
\
...
...
libstdc++-v3/include/Makefile.in
View file @
d233c237
# Makefile.in generated by automake 1.11.
1
from Makefile.am.
# Makefile.in generated by automake 1.11.
6
from Makefile.am.
# @configure_input@
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009
, 2010, 2011 Free Software
# Inc.
#
Foundation,
Inc.
# This Makefile.in is free software; the Free Software Foundation
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# with or without modifications, as long as this notice is preserved.
...
@@ -15,6 +15,23 @@
...
@@ -15,6 +15,23 @@
@SET_MAKE@
@SET_MAKE@
VPATH
=
@srcdir@
VPATH
=
@srcdir@
am__make_dryrun
=
\
{
\
am__dry
=
no
;
\
case
$$
MAKEFLAGS
in
\
*
\\
[
\ \
]
*
)
\
echo
'am--echo: ; @echo "AM" OK'
|
$(MAKE)
-f
- 2>/dev/null
\
|
grep
'^AM OK$$'
>
/dev/null
||
am__dry
=
yes
;;
\
*
)
\
for
am__flg
in
$$
MAKEFLAGS
;
do
\
case
$$
am__flg
in
\
*
=
*
|
--
*
)
;;
\
*
n
*
)
am__dry
=
yes
;
break
;;
\
esac
;
\
done
;;
\
esac
;
\
test
$$
am__dry
=
yes
;
\
}
pkgdatadir
=
$(datadir)
/@PACKAGE@
pkgdatadir
=
$(datadir)
/@PACKAGE@
pkgincludedir
=
$(includedir)
/@PACKAGE@
pkgincludedir
=
$(includedir)
/@PACKAGE@
pkglibdir
=
$(libdir)
/@PACKAGE@
pkglibdir
=
$(libdir)
/@PACKAGE@
...
@@ -67,6 +84,11 @@ CONFIG_CLEAN_VPATH_FILES =
...
@@ -67,6 +84,11 @@ CONFIG_CLEAN_VPATH_FILES =
depcomp
=
depcomp
=
am__depfiles_maybe
=
am__depfiles_maybe
=
SOURCES
=
SOURCES
=
am__can_run_installinfo
=
\
case
$$
AM_UPDATE_INFO_DIR
in
\
n|no|NO
)
false
;;
\
*
)
(
install-info
--version
)
>
/dev/null 2>&1
;;
\
esac
ABI_TWEAKS_SRCDIR
=
@ABI_TWEAKS_SRCDIR@
ABI_TWEAKS_SRCDIR
=
@ABI_TWEAKS_SRCDIR@
ACLOCAL
=
@ACLOCAL@
ACLOCAL
=
@ACLOCAL@
ALLOCATOR_H
=
@ALLOCATOR_H@
ALLOCATOR_H
=
@ALLOCATOR_H@
...
@@ -759,6 +781,7 @@ ext_headers = \
...
@@ -759,6 +781,7 @@ ext_headers = \
${
ext_srcdir
}
/array_allocator.h
\
${
ext_srcdir
}
/array_allocator.h
\
${
ext_srcdir
}
/bitmap_allocator.h
\
${
ext_srcdir
}
/bitmap_allocator.h
\
${
ext_srcdir
}
/cast.h
\
${
ext_srcdir
}
/cast.h
\
${
ext_srcdir
}
/cmath
\
${
ext_srcdir
}
/codecvt_specializations.h
\
${
ext_srcdir
}
/codecvt_specializations.h
\
${
ext_srcdir
}
/concurrence.h
\
${
ext_srcdir
}
/concurrence.h
\
${
ext_srcdir
}
/debug_allocator.h
\
${
ext_srcdir
}
/debug_allocator.h
\
...
@@ -1191,6 +1214,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
...
@@ -1191,6 +1214,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo
' cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/$@
$(am__depfiles_maybe)
'
;
\
echo
' cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/$@
$(am__depfiles_maybe)
'
;
\
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
$(am__depfiles_maybe)
;;
\
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
$(am__depfiles_maybe)
;;
\
esac
;
esac
;
$(top_srcdir)/fragment.am
:
$(top_builddir)/config.status
:
$(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(top_builddir)/config.status
:
$(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd
$(top_builddir)
&&
$(MAKE)
$(AM_MAKEFLAGS)
am--refresh
cd
$(top_builddir)
&&
$(MAKE)
$(AM_MAKEFLAGS)
am--refresh
...
@@ -1226,10 +1250,15 @@ install-am: all-am
...
@@ -1226,10 +1250,15 @@ install-am: all-am
installcheck
:
installcheck-am
installcheck
:
installcheck-am
install-strip
:
install-strip
:
$(MAKE)
$(AM_MAKEFLAGS)
INSTALL_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
\
if
test
-z
'
$(STRIP)
'
;
then
\
install_sh_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
INSTALL_STRIP_FLAG
=
-s
\
$(MAKE)
$(AM_MAKEFLAGS)
INSTALL_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
\
`
test
-z
'
$(STRIP)
'
||
\
install_sh_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
INSTALL_STRIP_FLAG
=
-s
\
echo
"INSTALL_PROGRAM_ENV=STRIPPROG='
$(STRIP)
'"
`
install
install
;
\
else
\
$(MAKE)
$(AM_MAKEFLAGS)
INSTALL_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
\
install_sh_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
INSTALL_STRIP_FLAG
=
-s
\
"INSTALL_PROGRAM_ENV=STRIPPROG='
$(STRIP)
'"
install
;
\
fi
mostlyclean-generic
:
mostlyclean-generic
:
clean-generic
:
clean-generic
:
...
...
libstdc++-v3/include/ext/cmath
0 → 100644
View file @
d233c237
// Math extensions -*- C++ -*-
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
/** @file ext/cmath
* This file is a GNU extension to the Standard C++ Library.
*/
#ifndef _EXT_CMATH
#define _EXT_CMATH 1
#pragma GCC system_header
#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else
#include <cmath>
#include <type_traits>
namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
// A class for math constants.
template<typename _RealType>
struct __math_constants
{
static_assert(std::is_floating_point<_RealType>::value,
"template argument not a floating point type");
// Constant @f$ \pi @f$.
static constexpr _RealType __pi = 3.1415926535897932384626433832795029L;
// Constant @f$ \pi / 2 @f$.
static constexpr _RealType __pi_half = 1.5707963267948966192313216916397514L;
// Constant @f$ \pi / 3 @f$.
static constexpr _RealType __pi_third = 1.0471975511965977461542144610931676L;
// Constant @f$ \pi / 4 @f$.
static constexpr _RealType __pi_quarter = 0.7853981633974483096156608458198757L;
// Constant @f$ \sqrt(\pi / 2) @f$.
static constexpr _RealType __root_pi_div_2 = 1.2533141373155002512078826424055226L;
// Constant @f$ 1 / \pi @f$.
static constexpr _RealType __one_div_pi = 0.3183098861837906715377675267450287L;
// Constant @f$ 2 / \pi @f$.
static constexpr _RealType __two_div_pi = 0.6366197723675813430755350534900574L;
// Constant @f$ 2 / \sqrt(\pi) @f$.
static constexpr _RealType __two_div_root_pi = 1.1283791670955125738961589031215452L;
// Constant Euler's number @f$ e @f$.
static constexpr _RealType __e = 2.7182818284590452353602874713526625L;
// Constant @f$ 1 / e @f$.
static constexpr _RealType __one_div_e = 0.36787944117144232159552377016146087L;
// Constant @f$ \log_2(e) @f$.
static constexpr _RealType __log2_e = 1.4426950408889634073599246810018921L;
// Constant @f$ \log_10(e) @f$.
static constexpr _RealType __log10_e = 0.4342944819032518276511289189166051L;
// Constant @f$ \ln(2) @f$.
static constexpr _RealType __ln_2 = 0.6931471805599453094172321214581766L;
// Constant @f$ \ln(3) @f$.
static constexpr _RealType __ln_3 = 1.0986122886681096913952452369225257L;
// Constant @f$ \ln(10) @f$.
static constexpr _RealType __ln_10 = 2.3025850929940456840179914546843642L;
// Constant Euler-Mascheroni @f$ \gamma_E @f$.
static constexpr _RealType __gamma_e = 0.5772156649015328606065120900824024L;
// Constant Golden Ratio @f$ \phi @f$.
static constexpr _RealType __phi = 1.6180339887498948482045868343656381L;
// Constant @f$ \sqrt(2) @f$.
static constexpr _RealType __root_2 = 1.4142135623730950488016887242096981L;
// Constant @f$ \sqrt(3) @f$.
static constexpr _RealType __root_3 = 1.7320508075688772935274463415058724L;
// Constant @f$ \sqrt(5) @f$.
static constexpr _RealType __root_5 = 2.2360679774997896964091736687312762L;
// Constant @f$ \sqrt(7) @f$.
static constexpr _RealType __root_7 = 2.6457513110645905905016157536392604L;
// Constant @f$ 1 / \sqrt(2) @f$.
static constexpr _RealType __one_div_root_2 = 0.7071067811865475244008443621048490L;
};
// And the template definitions for the constants.
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__pi;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__pi_half;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__pi_third;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__pi_quarter;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__root_pi_div_2;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__one_div_pi;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__two_div_pi;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__two_div_root_pi;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__e;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__one_div_e;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__log2_e;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__log10_e;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__ln_2;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__ln_3;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__ln_10;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__gamma_e;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__phi;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__root_2;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__root_3;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__root_5;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__root_7;
template<typename _RealType>
constexpr _RealType __math_constants<_RealType>::__one_div_root_2;
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __gnu_cxx
#endif // C++11
#endif // _EXT_CMATH
libstdc++-v3/include/ext/random
View file @
d233c237
...
@@ -37,6 +37,7 @@
...
@@ -37,6 +37,7 @@
#include <random>
#include <random>
#include <array>
#include <array>
#include <ext/cmath>
#ifdef __SSE2__
#ifdef __SSE2__
# include <x86intrin.h>
# include <x86intrin.h>
#endif
#endif
...
@@ -958,7 +959,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -958,7 +959,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool
friend bool
operator==(const param_type& __p1, const param_type& __p2)
operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_nu == __p2._M_nu
{ return __p1._M_nu == __p2._M_nu
&& __p1._M_sigma == __p2._M_sigma; }
&& __p1._M_sigma == __p2._M_sigma; }
private:
private:
void _M_initialize();
void _M_initialize();
...
@@ -1055,7 +1056,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -1055,7 +1056,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
result_type
result_type
operator()(_UniformRandomNumberGenerator& __urng,
operator()(_UniformRandomNumberGenerator& __urng,
const param_type& __p)
const param_type& __p)
{
{
typename std::normal_distribution<result_type>::param_type
typename std::normal_distribution<result_type>::param_type
__px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma());
__px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma());
result_type __x = this->_M_ndx(__px, __urng);
result_type __x = this->_M_ndx(__px, __urng);
...
@@ -1200,7 +1201,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -1200,7 +1201,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool
friend bool
operator==(const param_type& __p1, const param_type& __p2)
operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_mu == __p2._M_mu
{ return __p1._M_mu == __p2._M_mu
&& __p1._M_omega == __p2._M_omega; }
&& __p1._M_omega == __p2._M_omega; }
private:
private:
void _M_initialize();
void _M_initialize();
...
@@ -1284,7 +1285,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -1284,7 +1285,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
result_type
result_type
operator()(_UniformRandomNumberGenerator& __urng,
operator()(_UniformRandomNumberGenerator& __urng,
const param_type& __p)
const param_type& __p)
{
{
typename std::gamma_distribution<result_type>::param_type
typename std::gamma_distribution<result_type>::param_type
__pg(__p.mu(), __p.omega() / __p.mu());
__pg(__p.mu(), __p.omega() / __p.mu());
return std::sqrt(this->_M_gd(__pg, __urng));
return std::sqrt(this->_M_gd(__pg, __urng));
...
@@ -1521,7 +1522,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -1521,7 +1522,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
result_type
result_type
operator()(_UniformRandomNumberGenerator& __urng,
operator()(_UniformRandomNumberGenerator& __urng,
const param_type& __p)
const param_type& __p)
{
{
return __p.mu() * std::pow(this->_M_ud(__urng),
return __p.mu() * std::pow(this->_M_ud(__urng),
-result_type(1) / __p.alpha());
-result_type(1) / __p.alpha());
}
}
...
@@ -1673,7 +1674,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -1673,7 +1674,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool
friend bool
operator==(const param_type& __p1, const param_type& __p2)
operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_lambda == __p2._M_lambda
{ return __p1._M_lambda == __p2._M_lambda
&& __p1._M_mu == __p2._M_mu
&& __p1._M_mu == __p2._M_mu
&& __p1._M_nu == __p2._M_nu; }
&& __p1._M_nu == __p2._M_nu; }
private:
private:
...
@@ -1921,14 +1922,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -1921,14 +1922,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
result_type __b = result_type(1))
result_type __b = result_type(1))
: _M_param(__a, __b),
: _M_param(__a, __b),
_M_ud(-1.5707963267948966192313216916397514L,
_M_ud(-1.5707963267948966192313216916397514L,
+1.5707963267948966192313216916397514L)
+1.5707963267948966192313216916397514L)
{ }
{ }
explicit
explicit
arcsine_distribution(const param_type& __p)
arcsine_distribution(const param_type& __p)
: _M_param(__p),
: _M_param(__p),
_M_ud(-1.5707963267948966192313216916397514L,
_M_ud(-1.5707963267948966192313216916397514L,
+1.5707963267948966192313216916397514L)
+1.5707963267948966192313216916397514L)
{ }
{ }
/**
/**
...
@@ -1994,7 +1995,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -1994,7 +1995,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
result_type
result_type
operator()(_UniformRandomNumberGenerator& __urng,
operator()(_UniformRandomNumberGenerator& __urng,
const param_type& __p)
const param_type& __p)
{
{
result_type __x = std::sin(this->_M_ud(__urng));
result_type __x = std::sin(this->_M_ud(__urng));
return (__x * (__p.b() - __p.a())
return (__x * (__p.b() - __p.a())
+ __p.a() + __p.b()) / result_type(2);
+ __p.a() + __p.b()) / result_type(2);
...
@@ -2142,7 +2143,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -2142,7 +2143,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool
friend bool
operator==(const param_type& __p1, const param_type& __p2)
operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_q == __p2._M_q
{ return __p1._M_q == __p2._M_q
&& __p1._M_omega == __p2._M_omega; }
&& __p1._M_omega == __p2._M_omega; }
private:
private:
void _M_initialize();
void _M_initialize();
...
@@ -2322,6 +2323,528 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -2322,6 +2323,528 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
const hoyt_distribution<_RealType>& __d2)
const hoyt_distribution<_RealType>& __d2)
{ return !(__d1 == __d2); }
{ return !(__d1 == __d2); }
/**
* @brief A triangular distribution for random numbers.
*
* The formula for the triangular probability density function is
* @f[
* / 0 for x < a
* p(x|a,b,c) = | \frac{2(x-a)}{(c-a)(b-a)} for a <= x <= b
* | \frac{2(c-x)}{(c-a)(c-b)} for b < x <= c
* \ 0 for c < x
* @f]
*
* <table border=1 cellpadding=10 cellspacing=0>
* <caption align=top>Distribution Statistics</caption>
* <tr><td>Mean</td><td>@f$ \frac{a+b+c}{2} @f$</td></tr>
* <tr><td>Variance</td><td>@f$ \frac{a^2+b^2+c^2-ab-ac-bc}
* {18}@f$</td></tr>
* <tr><td>Range</td><td>@f$[a, c]@f$</td></tr>
* </table>
*/
template<typename _RealType = double>
class triangular_distribution
{
static_assert(std::is_floating_point<_RealType>::value,
"template argument not a floating point type");
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
/** Parameter type. */
struct param_type
{
friend class triangular_distribution<_RealType>;
explicit
param_type(_RealType __a = _RealType(0),
_RealType __b = _RealType(0.5),
_RealType __c = _RealType(1))
: _M_a(__a), _M_b(__b), _M_c(__c)
{
_GLIBCXX_DEBUG_ASSERT(_M_a <= _M_b);
_GLIBCXX_DEBUG_ASSERT(_M_b <= _M_c);
_GLIBCXX_DEBUG_ASSERT(_M_a < _M_c);
_M_r_ab = (_M_b - _M_a) / (_M_c - _M_a);
_M_f_ab_ac = (_M_b - _M_a) * (_M_c - _M_a);
_M_f_bc_ac = (_M_c - _M_b) * (_M_c - _M_a);
}
_RealType
a() const
{ return _M_a; }
_RealType
b() const
{ return _M_b; }
_RealType
c() const
{ return _M_c; }
friend bool
operator==(const param_type& __p1, const param_type& __p2)
{ return (__p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b
&& __p1._M_c == __p2._M_c); }
private:
_RealType _M_a;
_RealType _M_b;
_RealType _M_c;
_RealType _M_r_ab;
_RealType _M_f_ab_ac;
_RealType _M_f_bc_ac;
};
/**
* @brief Constructs a triangle distribution with parameters
* @f$ a @f$, @f$ b @f$ and @f$ c @f$.
*/
explicit
triangular_distribution(result_type __a = result_type(0),
result_type __b = result_type(0.5),
result_type __c = result_type(1))
: _M_param(__a, __b, __c)
{ }
explicit
triangular_distribution(const param_type& __p)
: _M_param(__p)
{ }
/**
* @brief Resets the distribution state.
*/
void
reset()
{ }
/**
* @brief Returns the @f$ a @f$ of the distribution.
*/
result_type
a() const
{ return _M_param.a(); }
/**
* @brief Returns the @f$ b @f$ of the distribution.
*/
result_type
b() const
{ return _M_param.b(); }
/**
* @brief Returns the @f$ c @f$ of the distribution.
*/
result_type
c() const
{ return _M_param.c(); }
/**
* @brief Returns the parameter set of the distribution.
*/
param_type
param() const
{ return _M_param; }
/**
* @brief Sets the parameter set of the distribution.
* @param __param The new parameter set of the distribution.
*/
void
param(const param_type& __param)
{ _M_param = __param; }
/**
* @brief Returns the greatest lower bound value of the distribution.
*/
result_type
min() const
{ return _M_param._M_a; }
/**
* @brief Returns the least upper bound value of the distribution.
*/
result_type
max() const
{ return _M_param._M_c; }
/**
* @brief Generating functions.
*/
template<typename _UniformRandomNumberGenerator>
result_type
operator()(_UniformRandomNumberGenerator& __urng)
{ return this->operator()(__urng, _M_param); }
template<typename _UniformRandomNumberGenerator>
result_type
operator()(_UniformRandomNumberGenerator& __urng,
const param_type& __p)
{
std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
__aurng(__urng);
result_type __rnd = __aurng();
if (__rnd <= __p._M_r_ab)
return __p.a() + std::sqrt(__rnd * __p._M_f_ab_ac);
else
return __p.c() - std::sqrt((result_type(1) - __rnd)
* __p._M_f_bc_ac);
}
template<typename _ForwardIterator,
typename _UniformRandomNumberGenerator>
void
__generate(_ForwardIterator __f, _ForwardIterator __t,
_UniformRandomNumberGenerator& __urng)
{ this->__generate(__f, __t, __urng, _M_param); }
template<typename _ForwardIterator,
typename _UniformRandomNumberGenerator>
void
__generate(_ForwardIterator __f, _ForwardIterator __t,
_UniformRandomNumberGenerator& __urng,
const param_type& __p)
{ this->__generate_impl(__f, __t, __urng, __p); }
template<typename _UniformRandomNumberGenerator>
void
__generate(result_type* __f, result_type* __t,
_UniformRandomNumberGenerator& __urng,
const param_type& __p)
{ this->__generate_impl(__f, __t, __urng, __p); }
/**
* @brief Return true if two triangle distributions have the same
* parameters and the sequences that would be generated
* are equal.
*/
friend bool
operator==(const triangular_distribution& __d1,
const triangular_distribution& __d2)
{ return __d1._M_param == __d2._M_param; }
/**
* @brief Inserts a %triangular_distribution random number distribution
* @p __x into the output stream @p __os.
*
* @param __os An output stream.
* @param __x A %triangular_distribution random number distribution.
*
* @returns The output stream with the state of @p __x inserted or in
* an error state.
*/
template<typename _RealType1, typename _CharT, typename _Traits>
friend std::basic_ostream<_CharT, _Traits>&
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const __gnu_cxx::triangular_distribution<_RealType1>& __x);
/**
* @brief Extracts a %triangular_distribution random number distribution
* @p __x from the input stream @p __is.
*
* @param __is An input stream.
* @param __x A %triangular_distribution random number generator engine.
*
* @returns The input stream with @p __x extracted or in an error state.
*/
template<typename _RealType1, typename _CharT, typename _Traits>
friend std::basic_istream<_CharT, _Traits>&
operator>>(std::basic_istream<_CharT, _Traits>& __is,
__gnu_cxx::triangular_distribution<_RealType1>& __x);
private:
template<typename _ForwardIterator,
typename _UniformRandomNumberGenerator>
void
__generate_impl(_ForwardIterator __f, _ForwardIterator __t,
_UniformRandomNumberGenerator& __urng,
const param_type& __p);
param_type _M_param;
};
/**
* @brief Return true if two triangle distributions are different.
*/
template<typename _RealType>
inline bool
operator!=(const __gnu_cxx::triangular_distribution<_RealType>& __d1,
const __gnu_cxx::triangular_distribution<_RealType>& __d2)
{ return !(__d1 == __d2); }
/**
* @brief A von Mises distribution for random numbers.
*
* The formula for the von Mises probability density function is
* @f[
* p(x|\mu,\kappa) = \frac{e^{\kappa \cos(x-\mu)}}
* {2\pi I_0(\kappa)}
* @f]
*
* The generating functions use the method according to:
*
* D. J. Best and N. I. Fisher, 1979. "Efficient Simulation of the
* von Mises Distribution", Journal of the Royal Statistical Society.
* Series C (Applied Statistics), Vol. 28, No. 2, pp. 152-157.
*
* <table border=1 cellpadding=10 cellspacing=0>
* <caption align=top>Distribution Statistics</caption>
* <tr><td>Mean</td><td>@f$ \mu @f$</td></tr>
* <tr><td>Variance</td><td>@f$ 1-I_1(\kappa)/I_0(\kappa) @f$</td></tr>
* <tr><td>Range</td><td>@f$[-\pi, \pi]@f$</td></tr>
* </table>
*/
template<typename _RealType = double>
class von_mises_distribution
{
static_assert(std::is_floating_point<_RealType>::value,
"template argument not a floating point type");
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
/** Parameter type. */
struct param_type
{
friend class von_mises_distribution<_RealType>;
explicit
param_type(_RealType __mu = _RealType(0),
_RealType __kappa = _RealType(1))
: _M_mu(__mu), _M_kappa(__kappa)
{
const _RealType __pi = __gnu_cxx::__math_constants<_RealType>::__pi;
_GLIBCXX_DEBUG_ASSERT(_M_mu >= -__pi && _M_mu <= __pi);
_GLIBCXX_DEBUG_ASSERT(_M_kappa >= _RealType(0));
}
_RealType
mu() const
{ return _M_mu; }
_RealType
kappa() const
{ return _M_kappa; }
friend bool
operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_kappa == __p2._M_kappa; }
private:
_RealType _M_mu;
_RealType _M_kappa;
};
/**
* @brief Constructs a beta distribution with parameters
* @f$\mu@f$ and @f$\kappa@f$.
*/
explicit
von_mises_distribution(result_type __mu = result_type(0),
result_type __kappa = result_type(1))
: _M_param(__mu, __kappa)
{ }
explicit
von_mises_distribution(const param_type& __p)
: _M_param(__p)
{ }
/**
* @brief Resets the distribution state.
*/
void
reset()
{ }
/**
* @brief Returns the @f$ \mu @f$ of the distribution.
*/
result_type
mu() const
{ return _M_param.mu(); }
/**
* @brief Returns the @f$ \kappa @f$ of the distribution.
*/
result_type
kappa() const
{ return _M_param.kappa(); }
/**
* @brief Returns the parameter set of the distribution.
*/
param_type
param() const
{ return _M_param; }
/**
* @brief Sets the parameter set of the distribution.
* @param __param The new parameter set of the distribution.
*/
void
param(const param_type& __param)
{ _M_param = __param; }
/**
* @brief Returns the greatest lower bound value of the distribution.
*/
result_type
min() const
{
return -__gnu_cxx::__math_constants<result_type>::__pi;
}
/**
* @brief Returns the least upper bound value of the distribution.
*/
result_type
max() const
{
return __gnu_cxx::__math_constants<result_type>::__pi;
}
/**
* @brief Generating functions.
*/
template<typename _UniformRandomNumberGenerator>
result_type
operator()(_UniformRandomNumberGenerator& __urng)
{ return this->operator()(__urng, _M_param); }
template<typename _UniformRandomNumberGenerator>
result_type
operator()(_UniformRandomNumberGenerator& __urng,
const param_type& __p)
{
const result_type __pi
= __gnu_cxx::__math_constants<result_type>::__pi;
std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
__aurng(__urng);
result_type __tau = (std::sqrt(result_type(4) * this->kappa()
* this->kappa() + result_type(1))
+ result_type(1));
result_type __rho = ((__tau - std::sqrt(result_type(2) * __tau))
/ (result_type(2) * this->kappa()));
result_type __r = ((result_type(1) + __rho * __rho)
/ (result_type(2) * __rho));
result_type __f;
while (1)
{
result_type __rnd = std::cos(__pi * __aurng());
__f = (result_type(1) + __r * __rnd) / (__r + __rnd);
result_type __c = this->kappa() * (__r - __f);
result_type __rnd2 = __aurng();
if (__c * (result_type(2) - __c) > __rnd2)
break;
if (std::log(__c / __rnd2) >= __c - result_type(1))
break;
}
result_type __res = std::acos(__f);
#if _GLIBCXX_USE_C99_MATH_TR1
__res = std::copysign(__res, __aurng() - result_type(0.5));
#else
if (__aurng() < result_type(0.5))
__res = -__res;
#endif
__res += this->mu();
if (__res > __pi)
__res -= result_type(2) * __pi;
else if (__res < -__pi)
__res += result_type(2) * __pi;
return __res;
}
template<typename _ForwardIterator,
typename _UniformRandomNumberGenerator>
void
__generate(_ForwardIterator __f, _ForwardIterator __t,
_UniformRandomNumberGenerator& __urng)
{ this->__generate(__f, __t, __urng, _M_param); }
template<typename _ForwardIterator,
typename _UniformRandomNumberGenerator>
void
__generate(_ForwardIterator __f, _ForwardIterator __t,
_UniformRandomNumberGenerator& __urng,
const param_type& __p)
{ this->__generate_impl(__f, __t, __urng, __p); }
template<typename _UniformRandomNumberGenerator>
void
__generate(result_type* __f, result_type* __t,
_UniformRandomNumberGenerator& __urng,
const param_type& __p)
{ this->__generate_impl(__f, __t, __urng, __p); }
/**
* @brief Return true if two von Mises distributions have the same
* parameters and the sequences that would be generated
* are equal.
*/
friend bool
operator==(const von_mises_distribution& __d1,
const von_mises_distribution& __d2)
{ return __d1._M_param == __d2._M_param; }
/**
* @brief Inserts a %von_mises_distribution random number distribution
* @p __x into the output stream @p __os.
*
* @param __os An output stream.
* @param __x A %von_mises_distribution random number distribution.
*
* @returns The output stream with the state of @p __x inserted or in
* an error state.
*/
template<typename _RealType1, typename _CharT, typename _Traits>
friend std::basic_ostream<_CharT, _Traits>&
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const __gnu_cxx::von_mises_distribution<_RealType1>& __x);
/**
* @brief Extracts a %von_mises_distribution random number distribution
* @p __x from the input stream @p __is.
*
* @param __is An input stream.
* @param __x A %von_mises_distribution random number generator engine.
*
* @returns The input stream with @p __x extracted or in an error state.
*/
template<typename _RealType1, typename _CharT, typename _Traits>
friend std::basic_istream<_CharT, _Traits>&
operator>>(std::basic_istream<_CharT, _Traits>& __is,
__gnu_cxx::von_mises_distribution<_RealType1>& __x);
private:
template<typename _ForwardIterator,
typename _UniformRandomNumberGenerator>
void
__generate_impl(_ForwardIterator __f, _ForwardIterator __t,
_UniformRandomNumberGenerator& __urng,
const param_type& __p);
param_type _M_param;
};
/**
* @brief Return true if two von Mises distributions are different.
*/
template<typename _RealType>
inline bool
operator!=(const __gnu_cxx::von_mises_distribution<_RealType>& __d1,
const __gnu_cxx::von_mises_distribution<_RealType>& __d2)
{ return !(__d1 == __d2); }
_GLIBCXX_END_NAMESPACE_VERSION
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __gnu_cxx
} // namespace __gnu_cxx
...
...
libstdc++-v3/include/ext/random.tcc
View file @
d233c237
...
@@ -1187,6 +1187,126 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
...
@@ -1187,6 +1187,126 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return __is;
return __is;
}
}
template<typename _RealType>
template<typename _OutputIterator,
typename _UniformRandomNumberGenerator>
void
triangular_distribution<_RealType>::
__generate_impl(_OutputIterator __f, _OutputIterator __t,
_UniformRandomNumberGenerator& __urng,
const param_type& __param)
{
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator>)
while (__f != __t)
*__f++ = this->operator()(__urng, __param);
}
template<typename _RealType, typename _CharT, typename _Traits>
std::basic_ostream<_CharT, _Traits>&
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const __gnu_cxx::triangular_distribution<_RealType>& __x)
{
typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' ');
__os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space);
__os.precision(std::numeric_limits<_RealType>::max_digits10);
__os << __x.a() << __space << __x.b() << __space << __x.c();
__os.flags(__flags);
__os.fill(__fill);
__os.precision(__precision);
return __os;
}
template<typename _RealType, typename _CharT, typename _Traits>
std::basic_istream<_CharT, _Traits>&
operator>>(std::basic_istream<_CharT, _Traits>& __is,
__gnu_cxx::triangular_distribution<_RealType>& __x)
{
typedef std::basic_istream<_CharT, _Traits> __istream_type;
typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __a, __b, __c;
__is >> __a >> __b >> __c;
__x.param(typename __gnu_cxx::triangular_distribution<_RealType>::
param_type(__a, __b, __c));
__is.flags(__flags);
return __is;
}
template<typename _RealType>
template<typename _OutputIterator,
typename _UniformRandomNumberGenerator>
void
von_mises_distribution<_RealType>::
__generate_impl(_OutputIterator __f, _OutputIterator __t,
_UniformRandomNumberGenerator& __urng,
const param_type& __param)
{
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator>)
while (__f != __t)
*__f++ = this->operator()(__urng, __param);
}
template<typename _RealType, typename _CharT, typename _Traits>
std::basic_ostream<_CharT, _Traits>&
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const __gnu_cxx::von_mises_distribution<_RealType>& __x)
{
typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' ');
__os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space);
__os.precision(std::numeric_limits<_RealType>::max_digits10);
__os << __x.mu() << __space << __x.kappa();
__os.flags(__flags);
__os.fill(__fill);
__os.precision(__precision);
return __os;
}
template<typename _RealType, typename _CharT, typename _Traits>
std::basic_istream<_CharT, _Traits>&
operator>>(std::basic_istream<_CharT, _Traits>& __is,
__gnu_cxx::von_mises_distribution<_RealType>& __x)
{
typedef std::basic_istream<_CharT, _Traits> __istream_type;
typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __mu, __kappa;
__is >> __mu >> __kappa;
__x.param(typename __gnu_cxx::von_mises_distribution<_RealType>::
param_type(__mu, __kappa));
__is.flags(__flags);
return __is;
}
_GLIBCXX_END_NAMESPACE_VERSION
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace
...
...
libstdc++-v3/testsuite/ext/triangular_distribution/cons/default.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <testsuite_hooks.h>
void
test01
()
{
bool
test
__attribute__
((
unused
))
=
true
;
__gnu_cxx
::
triangular_distribution
<>
u
;
VERIFY
(
u
.
a
()
==
0.0
);
VERIFY
(
u
.
b
()
==
0.5
);
VERIFY
(
u
.
c
()
==
1.0
);
VERIFY
(
u
.
min
()
==
0.0
);
VERIFY
(
u
.
max
()
==
1.0
);
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/triangular_distribution/cons/parms.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <testsuite_hooks.h>
void
test01
()
{
bool
test
__attribute__
((
unused
))
=
true
;
__gnu_cxx
::
triangular_distribution
<>
u
(
1.5
,
3.0
,
3.5
);
VERIFY
(
u
.
a
()
==
1.5
);
VERIFY
(
u
.
b
()
==
3.0
);
VERIFY
(
u
.
c
()
==
3.5
);
VERIFY
(
u
.
min
()
==
1.5
);
VERIFY
(
u
.
max
()
==
3.5
);
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/triangular_distribution/operators/equal.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2010-03-16 Paolo Carlini <paolo.carlini@oracle.com>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <testsuite_hooks.h>
void
test01
()
{
bool
test
__attribute__
((
unused
))
=
true
;
__gnu_cxx
::
triangular_distribution
<
double
>
u
(
1.5
,
3.0
,
4.0
),
v
,
w
;
VERIFY
(
v
==
w
);
VERIFY
(
!
(
u
==
v
)
);
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/triangular_distribution/operators/inequal.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2010-03-16 Paolo Carlini <paolo.carlini@oracle.com>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <testsuite_hooks.h>
void
test01
()
{
bool
test
__attribute__
((
unused
))
=
true
;
__gnu_cxx
::
triangular_distribution
<
double
>
u
(
1.5
,
3.0
,
5.0
),
v
,
w
;
VERIFY
(
u
!=
v
);
VERIFY
(
!
(
v
!=
w
)
);
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/triangular_distribution/operators/serialize.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2009-08-14 Edward M. Smith-Rowland <3dw4rd@verizon.net>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <sstream>
void
test01
()
{
std
::
stringstream
str
;
__gnu_cxx
::
triangular_distribution
<
double
>
u
(
1.5
,
3.0
,
4.5
),
v
;
std
::
minstd_rand0
rng
;
u
(
rng
);
// advance
str
<<
u
;
str
>>
v
;
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/triangular_distribution/requirements/explicit_instantiation/1.cc
0 → 100644
View file @
d233c237
// { dg-do compile }
// { dg-options "-std=c++11" }
// { dg-require-cstdint "" }
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
template
class
__gnu_cxx
::
triangular_distribution
<
float
>
;
template
class
__gnu_cxx
::
triangular_distribution
<
double
>
;
template
class
__gnu_cxx
::
triangular_distribution
<
long
double
>
;
libstdc++-v3/testsuite/ext/triangular_distribution/requirements/typedefs.cc
0 → 100644
View file @
d233c237
// { dg-do compile }
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
void
test01
()
{
typedef
__gnu_cxx
::
triangular_distribution
<
double
>
test_type
;
typedef
test_type
::
result_type
result_type
;
typedef
test_type
::
param_type
param_type
;
}
libstdc++-v3/testsuite/ext/von_mises_distribution/cons/default.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <testsuite_hooks.h>
void
test01
()
{
bool
test
__attribute__
((
unused
))
=
true
;
__gnu_cxx
::
von_mises_distribution
<>
u
;
VERIFY
(
u
.
mu
()
==
0.0
);
VERIFY
(
u
.
kappa
()
==
1.0
);
VERIFY
(
u
.
min
()
==
-
__gnu_cxx
::
__math_constants
<
double
>::
__pi
);
VERIFY
(
u
.
max
()
==
__gnu_cxx
::
__math_constants
<
double
>::
__pi
);
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/von_mises_distribution/cons/parms.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <testsuite_hooks.h>
void
test01
()
{
bool
test
__attribute__
((
unused
))
=
true
;
__gnu_cxx
::
von_mises_distribution
<>
u
(
1.5
,
3.0
);
VERIFY
(
u
.
mu
()
==
1.5
);
VERIFY
(
u
.
kappa
()
==
3.0
);
VERIFY
(
u
.
min
()
==
-
__gnu_cxx
::
__math_constants
<
double
>::
__pi
);
VERIFY
(
u
.
max
()
==
__gnu_cxx
::
__math_constants
<
double
>::
__pi
);
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/von_mises_distribution/operators/equal.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2010-03-16 Paolo Carlini <paolo.carlini@oracle.com>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <testsuite_hooks.h>
void
test01
()
{
bool
test
__attribute__
((
unused
))
=
true
;
__gnu_cxx
::
von_mises_distribution
<
double
>
u
(
1.5
,
3.0
),
v
,
w
;
VERIFY
(
v
==
w
);
VERIFY
(
!
(
u
==
v
)
);
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/von_mises_distribution/operators/inequal.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2010-03-16 Paolo Carlini <paolo.carlini@oracle.com>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <testsuite_hooks.h>
void
test01
()
{
bool
test
__attribute__
((
unused
))
=
true
;
__gnu_cxx
::
von_mises_distribution
<
double
>
u
(
1.5
,
3.0
),
v
,
w
;
VERIFY
(
u
!=
v
);
VERIFY
(
!
(
v
!=
w
)
);
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/von_mises_distribution/operators/serialize.cc
0 → 100644
View file @
d233c237
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2009-08-14 Edward M. Smith-Rowland <3dw4rd@verizon.net>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
#include <sstream>
void
test01
()
{
std
::
stringstream
str
;
__gnu_cxx
::
von_mises_distribution
<
double
>
u
(
1.5
,
3.0
),
v
;
std
::
minstd_rand0
rng
;
u
(
rng
);
// advance
str
<<
u
;
str
>>
v
;
}
int
main
()
{
test01
();
return
0
;
}
libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/explicit_instantiation/1.cc
0 → 100644
View file @
d233c237
// { dg-do compile }
// { dg-options "-std=c++11" }
// { dg-require-cstdint "" }
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
template
class
__gnu_cxx
::
von_mises_distribution
<
float
>
;
template
class
__gnu_cxx
::
von_mises_distribution
<
double
>
;
template
class
__gnu_cxx
::
von_mises_distribution
<
long
double
>
;
libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/typedefs.cc
0 → 100644
View file @
d233c237
// { dg-do compile }
// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
//
// 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net>
// 2013-03-02 Ulrich Drepper <drepper@gmail.com>
//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/random>
void
test01
()
{
typedef
__gnu_cxx
::
von_mises_distribution
<
double
>
test_type
;
typedef
test_type
::
result_type
result_type
;
typedef
test_type
::
param_type
param_type
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment