// // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo // // The contents of this file are covered under the licence agreement in the // file "LICENCE" distributed with Cforall. // // math.trait.hfa -- // // Author : Peter A. Buhr // Created On : Fri Jul 16 15:40:52 2021 // Last Modified By : Peter A. Buhr // Last Modified On : Thu Feb 2 11:36:56 2023 // Update Count : 20 // #pragma once forall( U ) trait Not { void ?{}( U &, zero_t ); int !?( U ); }; // Not forall( T | Not( T ) ) trait Equality { int ?==?( T, T ); int ?!=?( T, T ); }; // Equality forall( U | Equality( U ) ) trait Relational { int ??( U, U ); int ?>=?( U, U ); }; // Relational forall ( T ) trait Signed { T +?( T ); T -?( T ); T abs( T ); }; // Signed forall( U | Signed( U ) ) trait Additive { U ?+?( U, U ); U ?-?( U, U ); U ?+=?( U &, U ); U ?-=?( U &, U ); }; // Additive forall( T | Additive( T ) ) trait Incdec { void ?{}( T &, one_t ); // T ?++( T & ); // T ++?( T & ); // T ?--( T & ); // T --?( T & ); }; // Incdec forall( U | Incdec( U ) ) trait Multiplicative { U ?*?( U, U ); U ?/?( U, U ); U ?%?( U, U ); U ?/=?( U &, U ); }; // Multiplicative forall( T | Relational( T ) | Multiplicative( T ) ) trait Arithmetic { }; // Arithmetic // Local Variables: // // mode: c // // tab-width: 4 // // End: //