Use new layout

This commit is contained in:
Philipp Möller 2012-08-16 17:12:26 +00:00
parent f40c0f16f7
commit c80da3b032
15 changed files with 392 additions and 430 deletions

6
.gitattributes vendored
View File

@ -112,7 +112,7 @@ Algebraic_foundations/doc/Algebraic_foundations/Concepts/RealEmbeddableTraits.h
Algebraic_foundations/doc/Algebraic_foundations/Concepts/RingNumberType.h -text
Algebraic_foundations/doc/Algebraic_foundations/Concepts/UniqueFactorizationDomain.h -text
Algebraic_foundations/doc/Algebraic_foundations/Concepts/Unique_factorization_domain_tag.h -text
Algebraic_foundations/doc/Algebraic_foundations/PkgDescription.txt -text
Algebraic_foundations/doc/Algebraic_foundations/PackageDescription.txt -text
Algebraic_foundations/doc/Algebraic_foundations/fig/AlgebraicConceptHierarchy.gif -text svneol=unset#image/gif
Algebraic_foundations/doc/Algebraic_foundations/fig/Algebraic_foundations2.png -text svneol=unset#image/png
Algebraic_foundations/doc_tex/Algebraic_foundations/Algebraic_foundations.png -text
@ -3285,10 +3285,12 @@ Modifier/doc_tex/Modifier/modifier.gif -text svneol=unset#image/gif
Modifier/doc_tex/Modifier/modifier_small.gif -text svneol=unset#image/gif
Modular_arithmetic/doc/Modular_arithmetic/CGAL/Modular_traits.h -text
Modular_arithmetic/doc/Modular_arithmetic/CGAL/Residue.h -text
Modular_arithmetic/doc/Modular_arithmetic/Concepts/ModularTraits--ModularImage.h -text
Modular_arithmetic/doc/Modular_arithmetic/Concepts/ModularTraits--ModularImageRepresentative.h -text
Modular_arithmetic/doc/Modular_arithmetic/Concepts/ModularTraits.h -text
Modular_arithmetic/doc/Modular_arithmetic/Concepts/Modularizable.h -text
Modular_arithmetic/doc/Modular_arithmetic/Modular_arithmetic.txt -text
Modular_arithmetic/doc/Modular_arithmetic/PkgDescription.txt -text
Modular_arithmetic/doc/Modular_arithmetic/PackageDescription.txt -text
Modular_arithmetic/doc/Modular_arithmetic/fig/Modular_arithmetic.png -text svneol=unset#image/png
Modular_arithmetic/doc_tex/Modular_arithmetic/Modular_arithmetic.png -text
Modular_arithmetic/doc_tex/Modular_arithmetic/PkgDescription.tex -text

View File

@ -1,7 +1,7 @@
namespace CGAL {
/*!
\mainpage ChapterAlgebraicFoundations Algebraic Foundations
\mainpage Algebraic Foundations
\authors Michael Hemmer
# Introduction #

View File

@ -0,0 +1,13 @@
/*!
\addtogroup PkgAlgebraicFoundations
\todo check generated documentation
\PkgDescriptionBegin{Algebraic Foundations}
\PkgPicture{Algebraic_foundations2.png}
\PkgAuthor{Michael Hemmer}
\PkgDesc{This package defines what algebra means for \cgal, in terms of concepts, classes and functions. The main features are: (i) explicit concepts for interoperability of types (ii) separation between algebraic types (not necessarily embeddable into the reals), and number types (embeddable into the reals).}
\PkgSince{3.3}
\cgalbib{cgal:h-af-12}
\license{ \ref licensesLGPL}
\PkgDescriptionEnd
*/

View File

@ -1,26 +0,0 @@
/*!
\addtogroup PkgAlgebraicFoundations Algebraic Foundations
<table cellpadding="2" cellspacing="0">
<tr>
<td colspan="2"><h1>Algebraic Foundations</h1></td>
<td></td>
</tr>
<tr>
<td rowspan="2">\image html fig/Algebraic_foundations2.png "" </td>
<td>
\par Michael Hemmer
\par "" This package defines what algebra means for \cgal, in terms of concepts, classes and functions. The main features are: (i) explicit concepts for interoperability of types (ii) separation between algebraic types (not necessarily embeddable into the reals), and number types (embeddable into the reals).
\since \cgal 3.3
\cgalbib{cgal:h-af-12}
\license{ \ref licensesLGPL "LGPL" }
\par Resources:
\ref ChapterAlgebraicFoundations "User Manual"
</td>
</table>
*/

View File

@ -1,7 +1,7 @@
namespace CGAL {
/*!
\page user_chapter_2D_Meshes 2D Conforming Triangulations and Meshes
\mainpage 2D Conforming Triangulations and Meshes
\author Laurent Rineau
This package implements Shewchuk's algorithm \cite s-mgdsa-00 to construct

View File

@ -254,7 +254,7 @@ selection mark without spoiling the correctness of the Minkowski sum.
The function `minkowski_sum_3()` should be used with the
::Exact_predicates_exact_constructions_kernel, which often is
the most efficient choice and allows floating-point input. Consult
Section \anchor sectionNef_3IO for more details.
Section \ref sectionNef_3IO for more details.
The following example code illustrates the usage of the function
`minkowski_sum_3()`. Note that either input polyhedra will be

View File

@ -1,17 +1,20 @@
namespace CGAL {
/// \ingroup PkgModularArithmetic
///
/// An instance of `Modular_traits` is a model of `ModularTraits`,
/// where `T` is the associated type.
///
/// \models ::ModularTraits
/*!
\ingroup PkgModularArithmetic
An instance of `Modular_traits` is a model of `ModularTraits`,
where <span class="textsc">T</span> is the associated type.
\models ::ModularTraits
*/
template< typename T >
class Modular_traits {
public:
}; /* class Modular_traits */
} /* namespace CGAL */
/// @}
}; /* end Modular_traits */
} /* end namespace CGAL */

View File

@ -1,163 +1,162 @@
namespace CGAL {
/// \ingroup PkgModularArithmetic
///
/// The class `Residue` represents a finite field \f$Z/pZ\f$, for some
/// prime number \f$p\f$. The prime number \f$p\f$ is stored in a
/// static member variable. The class provides static member
/// functions to change this value. <B>Note that changing the prime
/// invalidates already existing objects of this type.</B>
///
/// However, already existing objects do not lose their value with respect to the
/// old prime and can be reused after restoring the old prime.
/// Since the type is based on double
/// arithmetic the prime is restricted to values less than \f$2^{26}\f$.
/// The initial value of \f$p\f$ is \f$67111067\f$.
///
/// Please note that the implementation of class `CGAL::Residue` requires a mantissa
/// precision according to the IEEE Standard for Floating-Point Arithmetic (IEEE 754).
/// However, on some processors the traditional FPU uses an extended precision. Hence, it
/// is indispensable that the proper mantissa length is enforced before performing
/// any arithmetic operations. Moreover, it is required that numbers are rounded to the
/// next nearest value. This can be ensured using `CGAL::Protect_FPU_rounding` with
/// `CGAL_FE_TONEAREST`, which also enforces the required precision as a side effect.
///
/// In case the flag `CGAL_HAS_THREADS` is undefined the prime is just
/// stored in a static member of the class, that is, `Residue` is not
/// thread-safe in this case. In case `CGAL_HAS_THREADS` the
/// implementation of the class is thread safe using
/// `boost::thread_specific_ptr`. However, this may cause some
/// performance penalty. Hence, it may be advisable to configure
/// `CGAL` with `CGAL_HAS_NO_THREADS`.
///
/// \models ::Field
/*!
\ingroup PkgModularArithmetic
\anchor Residue
The class `Residue` represents a finite field \f$ \Z{/p\Z}\f$,
for some prime number \f$ p\f$.
The prime number \f$ p\f$ is stored in a static member variable.
The class provides static member functions to change this value.
<B>Note that changing the prime invalidates already existing objects
of this type.</B>
However, already existing objects do not lose their value with respect to the
old prime and can be reused after restoring the old prime.
Since the type is based on double
arithmetic the prime is restricted to values less than \f$ 2^{26}\f$.
The initial value of \f$ p\f$ is 67111067.
Please note that the implementation of class `CGAL::Residue` requires a mantissa
precision according to the IEEE Standard for Floating-Point Arithmetic (IEEE 754).
However, on some processors the traditional FPU uses an extended precision. Hence, it
is indispensable that the proper mantissa length is enforced before performing
any arithmetic operations. Moreover, it is required that numbers are rounded to the
next nearest value. This can be ensured using `CGAL::Protect_FPU_rounding` with
`CGAL_FE_TONEAREST`, which also enforces the required precision as a side effect.
In case the flag `CGAL_HAS_THREADS`
is undefined the prime is just stored in a static member
of the class, that is, `Residue` is not thread-safe in this case.
In case `CGAL_HAS_THREADS`
the implementation of the class is thread safe using
`boost::thread_specific_ptr`. However, this may cause some performance
penalty. Hence, it may be advisable to configure `CGAL` with
`CGAL_HAS_NO_THREADS`.
\models ::Field
*/
class Residue {
public:
/// \name Creation
/// \name Creation
/// @{
/*!
introduces a variable `x`, which is initialized with zero;
*/
Residue();
/// @}
/// \name Creation
/*!
introduces a variable `x`, which is initialized with zero;
*/
Residue();
/*!
copy constructor;
*/
Residue(const Residue& m);
/*!
introduces a variable `x`, which is initialized with \f$ i \% p\f$;
*/
Residue(int i);
/*!
introduces a variable `x`, which is initialized with \f$ i \% p\f$;
*/
Residue(long i);
/// @}
/// \name Operations
/// @{
/*!
copy constructor;
*/
Residue(const Residue& m);
/// @}
/// \name Creation
/// @{
/*!
introduces a variable `x`, which is initialized with \f$i \mod p\f$;
*/
Residue(int i);
/// @}
/*!
/// \name Creation
/// @{
/*!
introduces a variable `x`, which is initialized with \f$i \mod p\f$;
*/
Residue(long i);
/// @}
Static member function;
/// \name Operations
/// @{
/*!
sets current prime to the given value and returns the old prime.
*/
static int set_current_prime(int p);
/// @}
sets current prime to the given value and returns the old prime.
*/
static int set_current_prime(int p);
/// \name Operations
/// @{
/*!
returns the value of the current prime.
*/
static int get_current_prime();
/// @}
/*!
/// \name Operations
/// @{
/*!
Returns the unique representative of `x`within the range \f$[-p/2,p/2]\f$, where \f$p\f$ is the current prime.
*/
int get_value() const;
Static member function;
///
///
Residue operator+(Residue a);
returns the value of the current prime.
///
///
Residue operator-(Residue a);
*/
static int get_current_prime();
///
///
Residue operator+(Residue a,Residue b);
/*!
///
///
Residue operator-(Residue a,Residue b);
Returns the unique representative of `x`within the range
\f$ [-p/2,p/2]\f$, where \f$ p\f$ is the current prime.
///
///
Residue operator*(Residue a,Residue b);
*/
int get_value() const;
///
///
Residue operator/(Residue a,Residue b);
/*!
/// \name Operations
/// @{
/*!
*/
Residue & operator+=(Residue a);
/// @}
*/
Residue operator+(Residue a);
/// \name Operations
/// @{
/*!
*/
Residue & operator-=(Residue a);
/// @}
/*!
/// \name Operations
/// @{
/*!
*/
Residue & operator*=(Residue a);
/// @}
*/
Residue operator-(Residue a);
/// \name Operations
/// @{
/*!
*/
Residue & operator/=(Residue a);
/// @}
/*!
///
///
Residue operator==(Residue a,Residue b);
*/
Residue operator+(Residue a,Residue b);
///
///
Residue operator!=(Residue a,Residue b);
/*!
*/
Residue operator-(Residue a,Residue b);
/*!
*/
Residue operator*(Residue a,Residue b);
/*!
*/
Residue operator/(Residue a,Residue b);
/*!
*/
Residue & operator+=(Residue a);
/*!
*/
Residue & operator-=(Residue a);
/*!
*/
Residue & operator*=(Residue a);
/*!
*/
Residue & operator/=(Residue a);
/*!
*/
Residue operator==(Residue a,Residue b);
/*!
*/
Residue operator!=(Residue a,Residue b);
/// @}
}; /* class Residue */
} /* namespace CGAL */
}; /* end Residue */
} /* end namespace CGAL */

View File

@ -0,0 +1,46 @@
/*!
\ingroup PkgModularArithmeticConcepts
\cgalconcept
This `AdaptableUnaryFunction` computes the modular image of the given value
with respect to a homomorphism \f$ \varphi\f$ from the
`ModularTraits::Type` into the `ModularTraits::Residue_type`.
The homomorphism preserves the mapping of `int` into both types
, i.e., \f$ \varphi(Type(i)) == Residue\_type(i)\f$.
\refines ::AdaptableUnaryFunction
\sa `ModularTraits`
*/
class ModularTraits::ModularImage {
public:
/// \name Types
/// @{
/*!
*/
typedef ModularTraits::Residue_type result_type;
/*!
*/
typedef ModularTraits::Type argument_type;
/*!
computes \f$ \varphi(x)\f$.
*/
result_type
operator()(const argument_type & x);
/// @}
}; /* end ModularTraits::ModularImage */

View File

@ -0,0 +1,41 @@
/*!
\ingroup PkgModularArithmeticConcepts
\cgalconcept
This `AdaptableUnaryFunction` returns a representative in the original type of a given modular image. More precisely, it implements the \f$ right inverse\f$ of a proper restriction of the homomorphism \f$ \varphi\f$, which is implemented by `ModularTraits::ModularImage`.
\refines ::AdaptableUnaryFunction
\sa `ModularTraits`
*/
class ModularTraits::ModularImageRepresentative {
public:
/// \name Types
/// @{
/*!
*/
typedef ModularTraits::Type result_type;
/*!
*/
typedef ModularTraits::Residue_type argument_type;
/*!
computes \f$ \varphi^{-1}(x)\f$.
*/
result_type
operator()(const argument_type &x);
/// @}
}; /* end ModularTraits::ModularImageRepresentative */

View File

@ -1,152 +1,68 @@
/// \ingroup PkgModularArithmeticConcepts
///
/// A model of `ModularTraits` is associated to a specific `Type`.
/// In case this associated type is `Modularizable`, this is indicated by the
/// boolean tag `Is_modularizable`. The mapping into the `Residue_type` is
/// provided by the functor `Modular_image`.
///
/// A model of `ModularTraits` is supposed to provide:
///
/// \hasModel CGAL::Modular_traits
///
/// \sa `CGAL::Residue`
/// \sa `Modularizable`
///
/*!
\ingroup PkgModularArithmeticConcepts
\cgalconcept
A model of `ModularTraits` is associated to a specific `Type`.
In case this associated type is `Modularizable`, this is indicated by the
boolean tag `Is_modularizable`. The mapping into the `Residue_type` is
provided by the functor `Modular_image`.
\hasModel CGAL::Modular_traits<T>
\sa `CGAL::Residue`
\sa `Modularizable`
*/
class ModularTraits {
public:
/// \ingroup PkgModularArithmeticConcepts
///
/// This `AdaptableUnaryFunction` computes the modular image of the given value
/// with respect to a homomorphism \f$\phi\f$ from the
/// `ModularTraits::Type` into the `ModularTraits::Residue_type`.
/// The homomorphism preserves the mapping of `int` into both types
/// , i.e., \f$\phi(Type(i)) == Residue_type(i)\f$.
///
/// \refines ::AdaptableUnaryFunction
///
/// \sa `ModularTraits`
class ModularImage {
public:
/// \name Types
/// @{
/*!
*/
typedef ModularTraits::Residue_type result_type;
/// @}
/// \name Types
/// @{
/*!
*/
typedef ModularTraits::Type argument_type;
/// @}
/// \name Types
/// @{
/*!
computes \f$\phi(x)\f$.
*/
result_type
operator()(const argument_type & x);
/// @}
}; /* concept ModularTraits::ModularImage */
/// \ingroup PkgModularArithmeticConcepts
///
/// This `AdaptableUnaryFunction` returns a representative in the
/// original type of a given modular image. More precisely, it
/// implements the \f$right inverse\f$ of a proper restriction of the
/// homomorphism \f$\phi\f$, which is implemented by
/// `ModularTraits::ModularImage`.
///
///
/// \refines ::AdaptableUnaryFunction
/// \sa `ModularTraits`
///
class ModularImageRepresentative {
public:
/// \name Types
/// @{
/*!
*/
typedef ModularTraits::Type result_type;
/// @}
/// \name Types
/// @{
/*!
*/
typedef ModularTraits::Residue_type argument_type;
/// @}
/// \name Types
/// @{
/*!
computes \f$\phi^{-1}(x)\f$.
*/
result_type
operator()(const argument_type &x);
/// @}
}; /* concept ModularTraits::ModularImageRepresentative */
/// \name Types
/// @{
/*!
The associated type.
*/
typedef Hidden_type Type ;
/// @}
/// \name Types
/// @{
/*!
Tag indicating whether the associated type is modularizable.
This is either `CGAL::Tag_true` or `CGAL::Tag_false`.
*/
typedef Hidden_type Is_modularizable;
/// @}
/// \name Types
/// @{
/*!
The type of the modular image.
In case the type is not `Modularizable` this is undefined.
*/
typedef Hidden_type Residue_type;
/// @}
/// \name Functors
/// In case the associated type is `Modularizable` all functors are provided.
/// In case a functor is not provided, it is set to `CGAL::Null_functor`.
/// \name Types
/// A model of `ModularTraits` is supposed to provide:
/// @{
/*!
A model of `ModularTraits::ModularImage`
*/
typedef Hidden_type Modular_image;
/*!
The associated type.
*/
typedef Hidden_type Type ;
/*!
Tag indicating whether the associated type is modularizable.
This is either `CGAL::Tag_true` or `CGAL::Tag_false`.
*/
typedef Hidden_type Is_modularizable;
/*!
The type of the modular image.
In case the type is not `Modularizable` this is undefined.
*/
typedef Hidden_type Residue_type;
/// @}
/// \name Functors
/// In case the associated type is `Modularizable` all functors are
/// provided. In case a functor is not provided, it is set to
/// `CGAL::Null_functor`.
/// @{
/*!
A model of `ModularTraits::ModularImage`
*/
typedef Hidden_type Modular_image;
/*!
A model of `ModularTraits::ModularImageRepresentative`
*/
typedef Hidden_type Modular_image_representative;
/*!
A model of `ModularTraits::ModularImageRepresentative`
*/
typedef Hidden_type Modular_image_representative;
/// @}
}; /* concept ModularTraits */
///
}; /* end ModularTraits */

View File

@ -1,46 +1,45 @@
/// \ingroup PkgModularArithmeticConcepts
/// Definition
/// --------------
///
/// An algebraic structure is called `Modularizable`, if there is a suitable mapping
/// into an algebraic structure which is based on the type `CGAL::Residue`.
/// For scalar types, e.g. Integers, this mapping is just the canonical homomorphism
/// into the type `CGAL::Residue` with respect to the current prime.
/// For compound types, e.g. Polynomials,
/// the mapping is applied to the coefficients of the compound type.
/// The mapping is provided via `CGAL::Modular_traits<Modularizable>`,
/// being a model of `ModularTraits`.
/// Note that types representing rationals, or types which do have some notion
/// of denominator, are not `Modularizable`.
/// This is due to the fact that the denominator may be zero modulo the prime,
/// which can not be represented.
///
///
/// Has Models
/// --------------
///
/// `int`
/// `long`
/// `CORE::BigInt`
/// `CGAL::Gmpz`
/// `leda::integer`
/// `mpz_class`
/// The following types are `Modularizable` iff their template arguments are.
/// `CGAL::Lazy_exact_nt<NT>`
/// `CGAL::Sqrt_extension<NT,ROOT>`
/// `CGAL::Polynomial<Coeff>`
/// See Also
/// --------------
/// `CGAL::Residue`
/// `CGAL::Modular_traits<T>`
///
/// }; /* concept Modularizable */
/*!
\ingroup PkgModularArithmeticConcepts
\cgalconcept
An algebraic structure is called `Modularizable`, if there is a suitable mapping
into an algebraic structure which is based on the type `CGAL::Residue`.
For scalar types, e.g. Integers, this mapping is just the canonical homomorphism
into the type `CGAL::Residue` with respect to the current prime.
For compound types, e.g. Polynomials,
the mapping is applied to the coefficients of the compound type.
The mapping is provided via `CGAL::Modular_traits<Modularizable>`,
being a model of `ModularTraits`.
Note that types representing rationals, or types which do have some notion
of denominator, are not `Modularizable`.
This is due to the fact that the denominator may be zero modulo the prime,
which can not be represented.
\hasModel int
\hasModel long
\hasModel CORE::BigInt
\hasModel CGAL::Gmpz
\hasModel leda::integer
\hasModel mpz_class
The following types are `Modularizable` iff their template arguments are.
\hasModel CGAL::Lazy_exact_nt<NT>
\hasModel CGAL::Sqrt_extension<NT,ROOT>
\hasModel CGAL::Polynomial<Coeff>
\sa `CGAL::Residue`
\sa `CGAL::Modular_traits<T>`
*/
class Modularizable {
public:
}; /* concept Modularizable */
///
/// @}
}; /* end Modularizable */

View File

@ -1,9 +1,10 @@
namespace CGAL {
/*!
\page chap:modular_arithmetic Modular Arithmetic
\authors Michael Hemmer and Sylvain Pion
\par Reference Manual:
\ref PkgModularArithmetic
\mainpage Modular Arithmetic
\authors Michael Hemmer and Sylvain Pion
# Introduction #
@ -15,46 +16,40 @@ possible to exclude that some value is zero by computing its modular
correspondent with respect to one prime only.
First of all, this package introduces a type `CGAL::Residue`.
It represents \f$Z_/pZ\f$ for some prime \f$p\f$.
The prime number \f$p\f$ is stored in a static member variable.
It represents \f$ \Z_{/p\Z}\f$ for some prime \f$ p\f$.
The prime number \f$ p\f$ is stored in a static member variable.
The class provides static member functions to change this value.
<B>Note that changing the prime invalidates already existing objects
of this type.</B>
However, already existing objects do not lose their value with respect to the
old prime and can be reused after restoring the old prime.
Since the type is based on double
arithmetic the prime is restricted to values less than \f$2^26\f$.
The initial value of \f$p\f$ is 67111067.
arithmetic the prime is restricted to values less than \f$ 2^{26}\f$.
The initial value of \f$ p\f$ is 67111067.
Please note that the implementation of class `CGAL::Residue` requires a mantissa
precision according to the IEEE Standard for Floating-Point Arithmetic (IEEE 754).
However, on some processors the traditional FPU uses an extended precision. Hence, it
is indispensable that the proper mantissa length is enforced before performing
is indispensable that the proper mantissa length is enforced before performing
any arithmetic operations. Moreover, it is required that numbers are rounded to the
next nearest value. This can be ensured using `CGAL::Protect_FPU_rounding` with
`CGAL_FE_TONEAREST`, which also enforces the required precision as a side effect.
\beginadvanced
In case the flag `CGAL_HAS_THREADS`
\advanced In case the flag `CGAL_HAS_THREADS`
is undefined the prime is just stored in a static member
of the class, that is, `CGAL::Residue` is not thread-safe in this case.
of the class, that is, `CGAL::Residue` is not thread-safe in this case.
In case `CGAL_HAS_THREADS`
the implementation of the class is thread safe using
`boost::thread_specific_ptr`. However, this may cause some performance
penalty. Hence, it may be advisable to configure \cgal with
`CGAL_HAS_NO_THREADS`.
\endadvanced
Moreover, the package introduces the concept `Modularizable`.
An algebraic structure `T` is considered as `Modularizable` if there
is a mapping from `T` into an algebraic structure that is based on
the type `CGAL::Residue`.
the type `CGAL::Residue`.
For scalar types, e.g. Integers, this mapping is just the canonical
homomorphism into \f$Z_/pZ\f$ represented by `CGAL::Residue`.
homomorphism into \f$ \Z_{/p\Z}\f$ represented by `CGAL::Residue`.
For compound types, e.g. Polynomials, the mapping is applied to the
coefficients of the compound type.
The mapping is provided by the class `CGAL::Modular_traits<T>`.
@ -65,15 +60,16 @@ The class `CGAL::Modular_traits<T>` is designed such that the concept
## Example ##
In the following example modular arithmetic is used as a filter.
\cgalexample{Modular_arithmetic/modular_filter.cpp}
\cgalexample{modular_filter.cpp}
# Design and Implementation History #
The class `CGAL::Residue` is based on the C-code of Sylvain Pion et. al.
as it was presented in \cite bepp-sdrns-99.
The remaining part of the package is the result of the integration process
of the NumeriX library of <span class="textsc">Exacus</span> \cite beh-eeeafcs-05 into \cgal.
of the NumeriX library of <span class="textsc">Exacus</span> \cite beh+-eeeafcs-05 into \cgal.
*/
} // namespace CGAL
*/
} /* namespace CGAL */

View File

@ -0,0 +1,18 @@
/// \defgroup PkgModularArithmetic Modular Arithmetic
/// \defgroup PkgModularArithmeticConcepts Concepts
/// \ingroup PkgModularArithmetic
/*!
\addtogroup PkgModularArithmetic
\todo check generated documentation
\PkgDescriptionBegin{Modular Arithmetic }
\PkgPicture{Modular_arithmetic.png}
\PkgAuthor{Michael Hemmer and Sylvain Pion}
\PkgDesc{This package provides arithmetic over finite fields. The provided tools are in particular useful for filters based on modular arithmetic and algorithms based on Chinese remainder. }
\PkgSince{3.4}
\cgalbib{ cgal:h-ma-12 }
\license{ \ref licensesLGPL }
\PkgDescriptionEnd
*/

View File

@ -1,45 +0,0 @@
/// \defgroup PkgModularArithmetic Modular Arithmetic
/// \defgroup PkgModularArithmeticConcepts Concepts
/// \ingroup PkgModularArithmetic
/*!
\addtogroup PkgModularArithmetic
<table cellpadding="2" cellspacing="0">
<tr>
<td colspan="2"><h1>Modular Arithmetic </h1></td>
<td></td>
</tr>
<tr>
<td rowspan="2">\image html Modular_arithmetic.png "" </td>
<td>
\par Michael Hemmer
\par "" This package provides arithmetic over finite fields. The provided tools are in particular useful for filters based on modular arithmetic and algorithms based on Chinese remainder.
\since \cgal 3.4
\cgalbib{cgal:h-ma-12}
\license{ \ref licensesLGPL "LGPL" }
\par Resources:
\ref chap:modular_arithmetic "User Manual"
</td>
</table>
# Classified Reference Pages #
## Concepts ##
- `Modularizable`
- `ModularTraits`
- `ModularTraits::ModularImage`
- `ModularTraits::ModularImageRepresentative`
## Types ##
- `CGAL::Residue`
- `CGAL::Modular_traits<T>`
*/