Changeset 0fc52b6 for src/libcfa/stdlib
- Timestamp:
- Jul 12, 2018, 9:14:07 AM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- 3007c0b, 8f91c9ae
- Parents:
- 777ed2b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/stdlib
r777ed2b r0fc52b6 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 5 07:41:03201813 // Update Count : 33 212 // Last Modified On : Thu Jul 12 08:03:58 2018 13 // Update Count : 337 14 14 // 15 15 16 16 #pragma once 17 17 18 #include <stdlib.h> // allocation, strto*, *abs18 #include <stdlib.h> // allocation, strto*, ato* 19 19 extern "C" { 20 20 void * memalign( size_t align, size_t size ); // malloc.h … … 227 227 size_t bsearchu( K key, const E * vals, size_t dim ); 228 228 } // distribution 229 230 //---------------------------------------231 232 [ int, int ] div( int num, int denom );233 [ long int, long int ] div( long int num, long int denom );234 [ long long int, long long int ] div( long long int num, long long int denom );235 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )236 [ T, T ] div( T num, T demon );237 238 //---------------------------------------239 240 extern "C" { int abs( int ); } // use default C routine for int241 static inline {242 unsigned char abs( signed char v ) { return abs( (int)v ); }243 unsigned long int abs( long int v ) { return labs( v ); }244 unsigned long long int abs( long long int v ) { return llabs( v ); }245 } // distribution246 247 extern "C" { // use default C routine for int248 double fabs( double );249 float fabsf( float );250 long double fabsl( long double );251 } // extern "C"252 static inline {253 float abs( float x ) { return fabsf( x ); }254 double abs( double x ) { return fabs( x ); }255 long double abs( long double x ) { return fabsl( x ); }256 } // distribution257 258 extern "C" { // use default C routine for int259 double cabs( double _Complex );260 float cabsf( float _Complex );261 long double cabsl( long double _Complex );262 } // extern "C"263 static inline {264 float abs( float _Complex x ) { return cabsf( x ); }265 double abs( double _Complex x ) { return cabs( x ); }266 long double abs( long double _Complex x ) { return cabsl( x ); }267 } // distribution268 269 forall( otype T | { void ?{}( T &, zero_t ); int ?<?( T, T ); T -?( T ); } )270 T abs( T );271 229 272 230 //--------------------------------------- … … 303 261 //--------------------------------------- 304 262 305 static inline { 306 forall( otype T | { int ?<?( T, T ); } ) 307 T min( T t1, T t2 ) { return t1 < t2 ? t1 : t2; } 308 309 forall( otype T | { int ?>?( T, T ); } ) 310 T max( T t1, T t2 ) { return t1 > t2 ? t1 : t2; } 311 312 forall( otype T | { T min( T, T ); T max( T, T ); } ) 313 T clamp( T value, T min_val, T max_val ) { return max( min_val, min( value, max_val ) ); } 314 315 forall( otype T ) 316 void swap( T & v1, T & v2 ) { T temp = v1; v1 = v2; v2 = temp; } 317 } // distribution 263 #include "common" 318 264 319 265 // Local Variables: //
Note: See TracChangeset
for help on using the changeset viewer.