This project is a demonstrator tool, made by the MOISE project, that translates timed Altarica models into Fiacre models. Such translation allows to use model checkers such as Tina to prove properties. The project contains the translator tool.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

63 lines
1.9 KiB

/*
*
* Copyright (c) Kresimir Fresl 2003
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* Author acknowledges the support of the Faculty of Civil Engineering,
* University of Zagreb, Croatia.
*
*/
#ifndef BOOST_NUMERIC_BINDINGS_TRAITS_DETAIL_UTILS_HPP
#define BOOST_NUMERIC_BINDINGS_TRAITS_DETAIL_UTILS_HPP
#include <iterator>
#include <boost/numeric/bindings/traits/type_traits.hpp>
namespace boost { namespace numeric { namespace bindings { namespace traits {
namespace detail {
// complex array => real & imaginary arrays
template <typename CIt, typename RIt>
void disentangle (CIt c, CIt c_end, RIt rr, RIt ri) {
for (; c != c_end; ++c, ++rr, ++ri) {
*rr = traits::real (*c);
*ri = traits::imag (*c);
}
}
// real & imaginary arrays => complex array
template <typename RIt, typename CIt>
void interlace (RIt r, RIt r_end, RIt ri, CIt c) {
typedef typename std::iterator_traits<CIt>::value_type cmplx_t;
#ifdef BOOST_NUMERIC_BINDINGS_BY_THE_BOOK
for (; r != r_end; ++r, ++ri, ++c)
*c = cmplx_t (*r, *ri);
#else
typedef typename type_traits<cmplx_t>::real_type real_t;
real_t *cp = reinterpret_cast<real_t*> (&*c);
for (; r != r_end; ++r, ++ri) {
*cp = *r; ++cp;
*cp = *ri; ++cp;
}
#endif
}
// converts real/complex to std::ptrdiff_t
inline std::ptrdiff_t to_int (float f) { return static_cast<std::ptrdiff_t> (f); }
inline std::ptrdiff_t to_int (double d) { return static_cast<std::ptrdiff_t> (d); }
inline std::ptrdiff_t to_int (traits::complex_f const& cf) {
return static_cast<std::ptrdiff_t> (traits::real (cf));
}
inline std::ptrdiff_t to_int (traits::complex_d const& cd) {
return static_cast<std::ptrdiff_t> (traits::real (cd));
}
}
}}}}
#endif