diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index b8cec282..d414d97f 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,13 +13,20 @@
- +assign_components
+ +compare
eval_acos
+ +eval_add
+ +eval_asin
+ +eval_atan
+ +eval_atan2
+ +eval_bitwise_and
+ +eval_bitwise_or
+ +eval_bitwise_xor
+ +eval_bit_flip
+ +eval_bit_set
+ +eval_bit_test
+ +eval_bit_unset
+ +eval_ceil
+ +eval_complement
+ +eval_convert_to
+ +eval_cos
+ +eval_cosh
+ +eval_decrement
+ +eval_divide
+ +eval_eq
+ +eval_exp
+ +eval_fabs
+ +eval_floor
+ +eval_fmod
+ +eval_frexp
+ +eval_gcd
+ +eval_get_sign
-eval_gt
+ +eval_increment
+ +eval_is_zero
+ +eval_lcm
+ +eval_ldexp
+ +eval_left_shift
+ +eval_log
+ +eval_log10
+ +eval_lt
+ +eval_modulus
+ +eval_multiply
+ +eval_pow
+ +eval_powm
+ +eval_qr
+ +eval_right_shift
+ +eval_round
+ +eval_sin
+ +eval_sinh
+ +eval_sqrt
+ +eval_subtract
+ +eval_tan
+ +eval_tanh
+ +eval_trunc
+ +fpclassify
miller_rabin_test
@@ -155,7 +387,7 @@trunc
zero
diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index f03f6b35..d1ecfc4b 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,13 +13,13 @@ -tommath_int
diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 3c80e3ca..14438ba0 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,13 +13,13 @@ -limb_type
A B C D E F G I L M N O P R S T U Z
assign_components
+ +Compulsory Requirements on the Backend type.
+ +cpp_dec_float
eval_acos
+ +eval_add
+ +eval_asin
+ +eval_atan
+ +eval_atan2
+ +eval_bitwise_and
+ +eval_bitwise_or
+ +eval_bitwise_xor
+ +eval_bit_flip
+ +eval_bit_set
+ +eval_bit_test
+ +eval_bit_unset
+ +eval_ceil
+ +eval_complement
+ +eval_convert_to
+ +eval_cos
+ +eval_cosh
+ +eval_decrement
+ +eval_divide
+ +eval_eq
+ +eval_exp
+ +eval_fabs
+ +eval_floor
+ +eval_fmod
+ +eval_frexp
+ +eval_gcd
+ +eval_get_sign
-eval_gt
+ +eval_increment
+ +eval_is_zero
+ +eval_lcm
+ +eval_ldexp
+ +eval_left_shift
+ +eval_log
+ +eval_log10
+ +eval_lt
+ +eval_modulus
+ +eval_multiply
+ +eval_pow
+ +eval_powm
+ +eval_qr
+ +eval_right_shift
+ +eval_round
+ +eval_sin
+ +eval_sinh
+ +eval_sqrt
+ +eval_subtract
+ +eval_tan
+ +eval_tanh
+ +eval_trunc
+ +fpclassify
Optional Requirements on the Backend Type
- +zero
diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index f1b934dc..c2b28dbe 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -136,6 +136,15 @@ Which don't noticably benefit from move support. Therefore, optimal performance comes from having both move-support, and expression templates enabled. ++ Note that while "moved-from" objects are left in a sane state, they + have an unspecified value, and the only permitted operations on them are destruction + or the assignment of a new value. Any other operation should be considered + a programming error and many backends will trigger an assertion if any other + operation is attempted. This behavior allows for optimal performance on move-construction + (i.e. no allocation required, we just take ownership of the existing object's + internal state), while maintaining usability in the standard library containers. +
The requirements on the Backend
template argument to number
- are split up into compulsory requirements, and optional requirements that
- are either to improve performance or provide optional features.
+ are split up into sections: compulsary and optional.
- TODO: Add optional construction support, add throws specification, clarify - what compulsory means. + Compulsary requirements have no default implementation in the library, therefore + if the feature they implement is to be supported at all, then they must be + implemented by the backend. +
++ Optional requirements have default implementations that are called if the + backend doesn't provide it's own. Typically the backend will implement these + to improve performance.
In the following tables, type B is the Backend
@@ -33,9 +38,12 @@
b and b2
are a variables of type B, cb
and cb2 are constant variables
- of type B, a is a variable
- of Arithmetic type, s is
- a variable of type const char*, ui
+ of type const B,
+ rb is a variable of type
+ B&&,
+ a is a variable of Arithmetic
+ type, s is a variable of
+ type const char*, ui
is a variable of type unsigned,
bb is a variable of type
bool, pa
@@ -55,6 +63,7 @@
+ Throws +
+std::intmax_t.
++ +
+std::uintmax_t.
+ +
+long double.
+ +
+- The type of the exponent of type B. + The type of the exponent of type B. This type is required only + for floating point types. +
++
+ +
++ +
++ +
+B::unsigned_types or B::float_types.
+ +
+
+ Throws a std::runtime_error if the string could
+ not be interpretted as a valid number.
+
+ noexcept
+
+ +
+b.
+ +
+cb == cb2.
+ noexcept
+
B::unsigned_types or B::float_types.
+ +
+cb to b.
+ +
+b.
+ +
+cb.
+ +
+b by cb.
+ std::overflow_error if cb has the
+ value zero, and std::numeric_limits<number<B> >::has_infinity ==
+ false
+
+ std::overflow_error if cb has the
+ value zero.
+
+ +
++ +
++ +
++ +
++ +
++ +
++ +
++ +
++ +
+
+ std::runtime_error if the exponent
+ of cb is too large to be stored in an int.
+
+ +
++ +
++ +
++ +
+number_kind_floating_point.
+ +
++ Throws +
++ Construct and assign: +
+
+ B(rb)
+
+ B
+
+ Move constructor. Afterwards variable rb
+ shall be in sane state, albeit with unspecified value. Only destruction
+ and assignment to the moved-from variable rb
+ need be supported after the operation.
+
+ noexcept
+
+ b =
+ rb
+
+ B&
+
+ Move-assign. Afterwards variable rb
+ shall be in sane state, albeit with unspecified value. Only destruction
+ and assignment to the moved-from variable rb
+ need be supported after the operation.
+
+ noexcept
+
+ B(a)
+
+ B
+
+ Direct construction from an arithmetic type. The type of a shall be listed in one of the
+ type lists B::signed_types, B::unsigned_types
+ or B::float_types. When not provided,
+ this operation is simulated using default-construction followed
+ by assignment.
+
+ +
+
B(b2)
@@ -791,7 +1074,13 @@
- Copy constructor from a different back-end type. + Copy constructor from a different back-end type. When not provided, + a generic interconversion routine is used. +
++
- Assignment operator from a different back-end type. + Assignment operator from a different back-end type. When not provided, + a generic interconversion routine is used. +
++
Assigns to b the
two components in the following arguments. Only applies to rational
- and complex number types.
+ and complex number types. When not provided, arithmetic operations
+ are used to synthesise the result from the two values.
+
+
Assigns to b the
two components in the following arguments. Only applies to rational
- and complex number types.
+ and complex number types. When not provided, arithmetic operations
+ are used to synthesise the result from the two values.
+ +
++ Comparisons: +
+
+ eval_eq(cb,
+ cb2)
+
+ bool
+
+ Returns true if cb and cb2
+ are equal in value. When not provided, the default implementation
+ returns cb.compare(cb2)
+ == 0.
+
+ noexcept
+
+ eval_eq(cb,
+ a)
+
+ bool
+
+ Returns true if cb and a
+ are equal in value. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ return the equivalent of eval_eq(cb, B(a)).
+
+ +
+
+ eval_eq(a,
+ cb)
+
+ bool
+
+ Returns true if cb and a
+ are equal in value. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ the default version returns eval_eq(cb, a).
+
+ +
+
+ eval_lt(cb,
+ cb2)
+
+ bool
+
+ Returns true if cb is less than cb2 in value. When not provided,
+ the default implementation returns cb.compare(cb2) <
+ 0.
+
+ noexcept
+
+ eval_lt(cb,
+ a)
+
+ bool
+
+ Returns true if cb is less than a in value. The type of a shall be listed in one of the
+ type lists B::signed_types, B::unsigned_types
+ or B::float_types. When not provided,
+ the default implementation returns eval_lt(cb, B(a)).
+
+ +
+
+ eval_lt(a,
+ cb)
+
+ bool
+
+ Returns true if a is less than cb in value. The type of a shall be listed in one of the
+ type lists B::signed_types, B::unsigned_types
+ or B::float_types. When not provided,
+ the default implementation returns eval_gt(cb, a).
+
+ +
+
+ eval_gt(cb,
+ cb2)
+
+ bool
+
+ Returns true if cb is greater than cb2 in value. When not provided,
+ the default implementation returns cb.compare(cb2) >
+ 0.
+
+ noexcept
+
+ eval_gt(cb,
+ a)
+
+ bool
+
+ Returns true if cb is greater than a in value. The type of a shall be listed in one of the
+ type lists B::signed_types, B::unsigned_types
+ or B::float_types. When not provided,
+ the default implementation returns eval_gt(cb, B(a)).
+
+ +
+
+ eval_gt(a,
+ cb)
+
+ bool
+
+ Returns true if a is greater than cb in value. The type of a shall be listed in one of the
+ type lists B::signed_types, B::unsigned_types
+ or B::float_types. When not provided,
+ the default implementation returns eval_lt(cb, a).
+
+ +
+
+ eval_is_zero(cb)
+
+ bool
+
+ Returns true if cb is zero, otherwise false. The default version of this
+ function returns cb.compare(ui_type(0)) ==
+ 0, where ui_type
+ is ui_type is
+ typename mpl::front<typename
+ B::unsigned_types>::type.
+
+ +
+
+ eval_get_sign(cb)
+
+ int
+
+ Returns a value < zero if cb
+ is negative, a value > zero if cb
+ is positive, and zero if cb
+ is zero. The default version of this function returns cb.compare(ui_type(0)),
+ where ui_type is
+ ui_type is typename mpl::front<typename
+ B::unsigned_types>::type.
+
+ +
++ Basic arithmetic: +
+
Adds a to b. The type of a shall be listed in one of the
type lists B::signed_types, B::unsigned_types
- or B::float_types.
-
- eval_subtract(b,
- a)
+ or B::float_types. When not provided,
+ the default version calls eval_add(b, B(a))
- void
-
- Subtracts a from
- b. The type of
- a shall be listed
- in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_multiply(b,
- a)
-
- void
-
- Multiplies b by
- a. The type of
- a shall be listed
- in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_divide(b,
- a)
-
- void
-
- Divides b by a. The type of a shall be listed in one of the
- type lists B::signed_types, B::unsigned_types
- or B::float_types.
-
- eval_modulus(b,
- a)
-
- void
-
- Computes b %=
- cb, only required when
- B is an integer
- type. The type of a
- shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_bitwise_and(b, a)
-
- void
-
- Computes b &=
- cb, only required when
- B is an integer
- type. The type of a
- shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_bitwise_or(b, a)
-
- void
-
- Computes b |=
- cb, only required when
- B is an integer
- type. The type of a
- shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_bitwise_xor(b, a)
-
- void
-
- Computes b ^=
- cb, only required when
- B is an integer
- type. The type of a
- shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+
Add cb to cb2 and stores the result in
- b.
-
- eval_subtract(b,
- cb,
- cb2)
+ b. When not provided,
+ does the equivalent of b
+ = cb; eval_add(b, cb2).
- void
-
- Subtracts cb2 from
- cb and stores the
- result in b.
-
- eval_multiply(b,
- cb,
- cb2)
-
- void
-
- Multiplies cb by
- cb2 and stores
- the result in b.
-
- eval_divide(b,
- cb,
- cb2)
-
- void
-
- Divides cb by
- cb2 and stores
- the result in b.
+
Add cb to a and stores the result in b. The type of a shall be listed in one of the
type lists B::signed_types, B::unsigned_types
- or B::float_types.
-
- eval_subtract(b,
- cb,
- a)
+ or B::float_types. When not provided,
+ does the equivalent of eval_add(b, cb, B(a)).
- void
-
- Subtracts a from
- cb and stores the
- result in b. The
- type of a shall
- be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_multiply(b,
- cb,
- a)
-
- void
-
- Multiplies cb by
- a and stores the
- result in b. The
- type of a shall
- be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_divide(b,
- cb,
- a)
-
- void
-
- Divides cb by
- a and stores the
- result in b. The
- type of a shall
- be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_modulus(b,
- cb,
- cb2)
-
- void
-
- Computes cb %
- cb2 and stores the result
- in b, only required
- when B is an integer
- type.
-
- eval_bitwise_and(b, cb, cb2)
-
- void
-
- Computes cb &
- cb2 and stores the result
- in b, only required
- when B is an integer
- type.
-
- eval_bitwise_or(b, cb, cb2)
-
- void
-
- Computes cb |
- cb2 and stores the result
- in b, only required
- when B is an integer
- type.
-
- eval_bitwise_xor(b, cb, cb2)
-
- void
-
- Computes cb ^
- cb2 and stores the result
- in b, only required
- when B is an integer
- type.
+
b. The type of
a shall be listed
in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_add(b, cb, a).
+
+
++ +
+
+ eval_subtract(b,
+ a)
+
+ void
+
+ Subtracts a from
+ b. The type of
+ a shall be listed
+ in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ the default version calls eval_subtract(b, B(a))
+
+ +
+
+ eval_subtract(b,
+ cb,
+ cb2)
+
+ void
+
+ Subtracts cb2 from
+ cb and stores the
+ result in b. When
+ not provided, does the equivalent of b
+ = cb; eval_subtract(b, cb2).
+
+ +
+
+ eval_subtract(b,
+ cb,
+ a)
+
+ void
+
+ Subtracts a from
+ cb and stores the
+ result in b. The
+ type of a shall
+ be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_subtract(b, cb, B(a)).
+
+
b. The
type of a shall
be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_subtract(b, cb, a); b.negate();.
+
+
++ +
+
+ eval_multiply(b,
+ a)
+
+ void
+
+ Multiplies b by
+ a. The type of
+ a shall be listed
+ in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ the default version calls eval_multiply(b, B(a))
+
+ +
+
+ eval_multiply(b,
+ cb,
+ cb2)
+
+ void
+
+ Multiplies cb by
+ cb2 and stores
+ the result in b.
+ When not provided, does the equivalent of b
+ = cb; eval_multiply(b, cb2).
+
+ +
+
+ eval_multiply(b,
+ cb,
+ a)
+
+ void
+
+ Multiplies cb by
+ a and stores the
+ result in b. The
+ type of a shall
+ be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_multiply(b, cb, B(a)).
+
+
b. The
type of a shall
be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_multiply(b, cb, a).
+
+
++ +
+
+ eval_divide(b,
+ a)
+
+ void
+
+ Divides b by a. The type of a shall be listed in one of the
+ type lists B::signed_types, B::unsigned_types
+ or B::float_types. When not provided,
+ the default version calls eval_divide(b, B(a))
+
+ std::overflow_error if a has the value zero, and std::numeric_limits<number<B>
+ >::has_infinity
+ == false
+
+ eval_divide(b,
+ cb,
+ cb2)
+
+ void
+
+ Divides cb by
+ cb2 and stores
+ the result in b.
+ When not provided, does the equivalent of b
+ = cb; eval_divide(b, cb2).
+
+ std::overflow_error if cb2 has the value zero, and
+ std::numeric_limits<number<B>
+ >::has_infinity
+ == false
+
+ eval_divide(b,
+ cb,
+ a)
+
+ void
+
+ Divides cb by
+ a and stores the
+ result in b. The
+ type of a shall
+ be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_divide(b, cb, B(a)).
+
+ std::overflow_error if a has the value zero, and std::numeric_limits<number<B>
+ >::has_infinity
+ == false
b. The type of
a shall be listed
in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_divide(b, B(a), cb).
+
+
+
+ std::overflow_error if cb has the
+ value zero, and std::numeric_limits<number<B> >::has_infinity ==
+ false
+
+ eval_increment(b)
+
+ void +
+
+ Increments the value of b
+ by one. When not provided, does the equivalent of eval_add(b,
+ static_cast<ui_type>(1u)).
+ Where ui_type is
+ typename mpl::front<typename
+ B::unsigned_types>::type.
+
+ +
+
+ eval_decrement(b)
+
+ void +
+
+ Decrements the value of b
+ by one. When not provided, does the equivalent of eval_subtract(b,
+ static_cast<ui_type>(1u)).
+ Where ui_type is
+ typename mpl::front<typename
+ B::unsigned_types>::type.
+
+ +
++ Integer specific operations: +
+
+ eval_modulus(b,
+ a)
+
+ void
+
+ Computes b %=
+ cb, only required when
+ B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ the default version calls eval_modulus(b, B(a))
+
+ std::overflow_error if a has the value zero.
+
+ eval_modulus(b,
+ cb,
+ cb2)
+
+ void
+
+ Computes cb %
+ cb2 and stores the result
+ in b, only required
+ when B is an integer
+ type. When not provided, does the equivalent of b
+ = cb; eval_modulus(b, cb2).
+
+ std::overflow_error if a has the value zero.
B is an integer
type. The type of a
shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
-
-
-
- eval_bitwise_and(b, cb, a)
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_modulus(b, cb, B(a)).
- void
-
- Computes cb &
- a and stores the result
- in b, only required
- when B is an integer
- type. The type of a
- shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_bitwise_or(b, cb, a)
-
- void
-
- Computes cb |
- a and stores the result
- in b, only required
- when B is an integer
- type. The type of a
- shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
-
- eval_bitwise_xor(b, cb, a)
-
- void
-
- Computes cb ^
- a and stores the result
- in b, only required
- when B is an integer
- type. The type of a
- shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ std::overflow_error if a has the value zero.
B is an integer
type. The type of a
shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_modulus(b, B(a), cb).
+
+
+
+ std::overflow_error if a has the value zero.
+
+ eval_bitwise_and(b, a)
+
+ void
+
+ Computes b &=
+ cb, only required when
+ B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ the default version calls eval_bitwise_and(b, B(a))
+
+ +
+
+ eval_bitwise_and(b, cb, cb2)
+
+ void
+
+ Computes cb &
+ cb2 and stores the result
+ in b, only required
+ when B is an integer
+ type. When not provided, does the equivalent of b
+ = cb; eval_bitwise_and(b, cb2).
+
+ +
+
+ eval_bitwise_and(b, cb, a)
+
+ void
+
+ Computes cb &
+ a and stores the result
+ in b, only required
+ when B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_bitwise_and(b, cb, B(a)).
+
+
B is an integer
type. The type of a
shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_bitwise_and(b, cb, a).
+
+
++ +
+
+ eval_bitwise_or(b, a)
+
+ void
+
+ Computes b |=
+ cb, only required when
+ B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ the default version calls eval_bitwise_or(b, B(a))
+
+ +
+
+ eval_bitwise_or(b, cb, cb2)
+
+ void
+
+ Computes cb |
+ cb2 and stores the result
+ in b, only required
+ when B is an integer
+ type. When not provided, does the equivalent of b
+ = cb; eval_bitwise_or(b, cb2).
+
+ +
+
+ eval_bitwise_or(b, cb, a)
+
+ void
+
+ Computes cb |
+ a and stores the result
+ in b, only required
+ when B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_bitwise_or(b, cb, B(a)).
+
+
B is an integer
type. The type of a
shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_bitwise_or(b, cb, a).
+
+
++ +
+
+ eval_bitwise_xor(b, a)
+
+ void
+
+ Computes b ^=
+ cb, only required when
+ B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ the default version calls eval_bitwise_xor(b, B(a))
+
+ +
+
+ eval_bitwise_xor(b, cb, cb2)
+
+ void
+
+ Computes cb ^
+ cb2 and stores the result
+ in b, only required
+ when B is an integer
+ type. When not provided, does the equivalent of b
+ = cb; eval_bitwise_xor(b, cb2).
+
+ +
+
+ eval_bitwise_xor(b, cb, a)
+
+ void
+
+ Computes cb ^
+ a and stores the result
+ in b, only required
+ when B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_bitwise_xor(b, cb, B(a)).
+
+
B is an integer
type. The type of a
shall be listed in one of the type lists B::signed_types,
- B::unsigned_types or B::float_types.
+ B::unsigned_types or B::float_types. When not provided,
+ does the equivalent of eval_bitwise_xor(b, cb, a).
+
+
++
b, only required
when B is an integer
- type.
+ type. When not provided, does the equivalent of b
+ = cb; eval_left_shift(b, a);.
+
+
++
b, only required
when B is an integer
- type.
+ type. When not provided, does the equivalent of b
+ = cb; eval_right_shift(b, a);.
-
-
- eval_increment(b)
-
- void -
-
- Increments the value of b
- by one.
-
- eval_decrement(b)
-
- void -
-
- Decrements the value of b
- by one.
-
- eval_is_zero(cb)
-
- bool
-
- Returns true if cb is zero, otherwise false
-
- eval_get_sign(cb)
-
- int
-
- Returns a value < zero if cb
- is negative, a value > zero if cb
- is positive, and zero if cb
- is zero.
-
- eval_abs(b,
- cb)
-
- void
-
- Set b to the absolute
- value of cb.
-
- eval_fabs(b,
- cb)
-
- void
-
- Set b to the absolute
- value of cb.
-
- eval_fpclassify(cb)
-
- int
-
- Returns one of the same values returned by std::fpclassify.
- Only required when B
- is an floating-point type.
-
- eval_trunc(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::trunc
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_round(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::round
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_exp(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::exp
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_log(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::log
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_log10(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::log10
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_sin(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::sin
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_cos(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::cos
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_tan(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::exp
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_asin(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::asin
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_acos(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::acos
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_atan(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::atan
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_sinh(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::sinh
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_cosh(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::cosh
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_tanh(b,
- cb)
-
- void
-
- Performs the equivalent operation to std::tanh
- on argument cb
- and stores the result in b.
- Only required when B
- is an floating-point type.
-
- eval_fmod(b,
- cb,
- cb2)
-
- void
-
- Performs the equivalent operation to std::fmod
- on arguments cb
- and cb2, and store
- the result in b.
- Only required when B
- is an floating-point type.
-
- eval_pow(b,
- cb,
- cb2)
-
- void
-
- Performs the equivalent operation to std::pow
- on arguments cb
- and cb2, and store
- the result in b.
- Only required when B
- is an floating-point type.
-
- eval_atan2(b,
- cb,
- cb2)
-
- void
-
- Performs the equivalent operation to std::atan
- on arguments cb
- and cb2, and store
- the result in b.
- Only required when B
- is an floating-point type.
+
b2 to the result of cb %
cb2. Only required when
B is an integer
- type.
+ type. The default version of this function is synthesised from
+ other operations above.
+
+
+
+ std::overflow_error if a has the value zero.
cb
% ui.
Only required when B
- is an integer type.
+ is an integer type. The default version of this function is synthesised
+ from other operations above.
+
+
+
+ std::overflow_error if a has the value zero.
Returns the index of the least significant bit that is set. Only
required when B
- is an integer type.
+ is an integer type. The default version of this function is synthesised
+ from other operations above.
+
+
cb
has bit ui set.
Only required when B
- is an integer type.
+ is an integer type. The default version of this function is synthesised
+ from other operations above.
+
+
++
ui
in b. Only required
when B is an integer
- type.
+ type. The default version of this function is synthesised from
+ other operations above.
+
+
++
ui
in b. Only required
when B is an integer
- type.
+ type. The default version of this function is synthesised from
+ other operations above.
+
+
++
ui
in b. Only required
when B is an integer
- type.
+ type. The default version of this function is synthesised from
+ other operations above.
+
+
++
cb
and cb2. Only required
when B is an integer
- type.
+ type. The default version of this function is synthesised from
+ other operations above.
+
+
++
cb
and cb2. Only required
when B is an integer
- type.
+ type. The default version of this function is synthesised from
+ other operations above.
+
+
++ +
+
+ eval_gcd(b,
+ cb,
+ a)
+
+ void
+
+ Sets b to the greatest
+ common divisor of cb
+ and cb2. Only required
+ when B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. The default version
+ of this function calls eval_gcd(b, cb, B(a)).
+
+ +
+
+ eval_lcm(b,
+ cb,
+ a)
+
+ void
+
+ Sets b to the least
+ common multiple of cb
+ and cb2. Only required
+ when B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. The default version
+ of this function calls eval_lcm(b, cb, B(a)).
+
+ +
+
+ eval_gcd(b,
+ a,
+ cb)
+
+ void
+
+ Sets b to the greatest
+ common divisor of cb
+ and a. Only required
+ when B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. The default version
+ of this function calls eval_gcd(b, cb, a).
+
+ +
+
+ eval_lcm(b,
+ a,
+ cb)
+
+ void
+
+ Sets b to the least
+ common multiple of cb
+ and a. Only required
+ when B is an integer
+ type. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types or B::float_types. The default version
+ of this function calls eval_lcm(b, cb, a).
+
+ +
+
+ eval_powm(b,
+ cb,
+ cb2,
+ cb3)
+
+ void
+
+ Sets b to the result
+ of (cb^cb2)%cb3. The default version of this
+ function is synthesised from other operations above.
+
+ +
+
+ eval_powm(b,
+ cb,
+ cb2,
+ a)
+
+ void
+
+ Sets b to the result
+ of (cb^cb2)%a. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types. The default version
+ of this function is synthesised from other operations above.
+
+ +
+
+ eval_powm(b,
+ cb,
+ a,
+ cb2)
+
+ void
+
+ Sets b to the result
+ of (cb^a)%cb2. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types. The default version
+ of this function is synthesised from other operations above.
+
+ +
+
+ eval_powm(b,
+ cb,
+ a,
+ a)
+
+ void
+
+ Sets b to the result
+ of (cb^a)%a. The type of a
+ shall be listed in one of the type lists B::signed_types,
+ B::unsigned_types. The default version
+ of this function is synthesised from other operations above.
+
+ +
++ Sign manipulation: +
+
+ eval_abs(b,
+ cb)
+
+ void
+
+ Set b to the absolute
+ value of cb. The
+ default version of this functions assigns cb
+ to b, and then
+ calls b.negate()
+ if eval_get_sign(cb) <
+ 0.
+
+ +
+
+ eval_fabs(b,
+ cb)
+
+ void
+
+ Set b to the absolute
+ value of cb. The
+ default version of this functions assigns cb
+ to b, and then
+ calls b.negate()
+ if eval_get_sign(cb) <
+ 0.
+
+ +
++ Floating point functions: +
+
+ eval_fpclassify(cb)
+
+ int
+
+ Returns one of the same values returned by std::fpclassify.
+ Only required when B
+ is an floating-point type. The default version of this function
+ will only test for zero cb.
+
+ +
+
+ eval_trunc(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::trunc
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_round(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::round
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_exp(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::exp
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_log(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::log
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_log10(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::log10
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_sin(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::sin
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_cos(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::cos
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_tan(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::exp
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_asin(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::asin
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_acos(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::acos
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_atan(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::atan
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_sinh(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::sinh
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_cosh(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::cosh
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_tanh(b,
+ cb)
+
+ void
+
+ Performs the equivalent operation to std::tanh
+ on argument cb
+ and stores the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_fmod(b,
+ cb,
+ cb2)
+
+ void
+
+ Performs the equivalent operation to std::fmod
+ on arguments cb
+ and cb2, and store
+ the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_pow(b,
+ cb,
+ cb2)
+
+ void
+
+ Performs the equivalent operation to std::pow
+ on arguments cb
+ and cb2, and store
+ the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+ +
+
+ eval_atan2(b,
+ cb,
+ cb2)
+
+ void
+
+ Performs the equivalent operation to std::atan
+ on arguments cb
+ and cb2, and store
+ the result in b.
+ Only required when B
+ is an floating-point type. The default version of this function
+ is synthesised from other operations above.
+
+
- The tables above place no throws requirements on any
- of the operations. It is up to each type modelling this concept to decide
+ When the tables above place no throws requirements on
+ an operation, then it is up to each type modelling this concept to decide
when or whether throwing an exception is desirable. However, thrown exceptions
should always either be the type, or inherit from the type std::runtime_error.
For example, a floating point type might choose to throw std::overflow_error
diff --git a/doc/html/index.html b/doc/html/index.html
index ba6104dd..bb9676a2 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -118,7 +118,7 @@
Last revised: August 08, 2012 at 18:23:03 GMT |
+Last revised: August 09, 2012 at 17:32:59 GMT |