Generated on Thu Jan 16 2025 00:00:00 for Gecode by doxygen 1.14.0
transcendental.hh
Go to the documentation of this file.
1/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2/*
3 * Main authors:
4 * Vincent Barichard <Vincent.Barichard@univ-angers.fr>
5 *
6 * Copyright:
7 * Vincent Barichard, 2012
8 *
9 * This file is part of Gecode, the generic constraint
10 * development environment:
11 * http://www.gecode.org
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining
14 * a copy of this software and associated documentation files (the
15 * "Software"), to deal in the Software without restriction, including
16 * without limitation the rights to use, copy, modify, merge, publish,
17 * distribute, sublicense, and/or sell copies of the Software, and to
18 * permit persons to whom the Software is furnished to do so, subject to
19 * the following conditions:
20 *
21 * The above copyright notice and this permission notice shall be
22 * included in all copies or substantial portions of the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 *
32 */
33
34#ifndef __GECODE_FLOAT_TRANSCENDENTAL_HH__
35#define __GECODE_FLOAT_TRANSCENDENTAL_HH__
36
37#include <gecode/float.hh>
38
43
44namespace Gecode { namespace Float { namespace Transcendental {
45
54 template<class A, class B>
55 class Exp : public MixBinaryPropagator<A,PC_FLOAT_BND,B,PC_FLOAT_BND> {
56 protected:
59
61 Exp(Space& home, Exp& p);
63 Exp(Home home, A x0, B x1);
64 public:
66 virtual Actor* copy(Space& home);
68 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
70 static ExecStatus post(Home home, A x0, B x1);
71 };
72
73
82 template<class A, class B>
83 class Pow : public MixBinaryPropagator<A,PC_FLOAT_BND,B,PC_FLOAT_BND> {
84 protected:
88
90 Pow(Space& home, Pow& p);
92 Pow(Home home, FloatNum base, A x0, B x1);
93 public:
95 virtual Actor* copy(Space& home);
97 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
99 static ExecStatus post(Home home, FloatNum base, A x0, B x1);
100 };
101
102}}}
103
105
106#endif
107
108// STATISTICS: float-prop
static ExecStatus post(Home home, A x0, B x1)
Post propagator for .
Definition exp-log.hpp:48
virtual Actor * copy(Space &home)
Create copy during cloning.
Definition exp-log.hpp:70
Exp(Space &home, Exp &p)
Constructor for cloning p.
Definition exp-log.hpp:65
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition exp-log.hpp:76
static ExecStatus post(Home home, FloatNum base, A x0, B x1)
Post propagator for .
Definition exp-log.hpp:98
Pow(Space &home, Pow &p)
Constructor for cloning p.
Definition exp-log.hpp:115
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition exp-log.hpp:127
virtual Actor * copy(Space &home)
Create copy during cloning.
Definition exp-log.hpp:121
Home class for posting propagators
Definition core.hpp:856
MixBinaryPropagator(Space &home, MixBinaryPropagator &p)
Definition pattern.hpp:597
friend class Space
Definition core.hpp:1068
ModEventDelta med
A set of modification events (used during propagation)
Definition core.hpp:1077
int ModEventDelta
Modification event deltas.
Definition core.hpp:89
double FloatNum
Floating point number base type.
Definition float.hh:106
Transcendental propagators
Floating point numbers.
const Gecode::PropCond PC_FLOAT_BND
Propagate when minimum or maximum of a view changes.
Definition var-type.hpp:292
Gecode toplevel namespace
ExecStatus
Definition core.hpp:472