Changeset 7c012e8
- Timestamp:
- Jun 18, 2023, 8:25:25 AM (21 months ago)
- Branches:
- master
- Children:
- 60c3d87e, 739bd7b
- Parents:
- b87ef7be
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/math.hfa
rb87ef7be r7c012e8 10 10 // Created On : Mon Apr 18 23:37:04 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S at Jun 17 22:59:42202313 // Update Count : 19912 // Last Modified On : Sun Jun 18 08:13:53 2023 13 // Update Count : 202 14 14 // 15 15 … … 371 371 372 372 inline __attribute__((always_inline)) static { 373 signed char floor( signed char n, signed char align ) { return n / align * align; } 374 unsigned char floor( unsigned char n, unsigned char align ) { return n / align * align; } 375 short int floor( short int n, short int align ) { return n / align * align; } 376 unsigned short int floor( unsigned short int n, unsigned short int align ) { return n / align * align; } 377 int floor( int n, int align ) { return n / align * align; } 378 unsigned int floor( unsigned int n, unsigned int align ) { return n / align * align; } 379 long int floor( long int n, long int align ) { return n / align * align; } 380 unsigned long int floor( unsigned long int n, unsigned long int align ) { return n / align * align; } 381 long long int floor( long long int n, long long int align ) { return n / align * align; } 382 unsigned long long int floor( unsigned long long int n, unsigned long long int align ) { return n / align * align; } 373 // force divide before multiply 374 signed char floor( signed char n, signed char align ) { return (n / align) * align; } 375 unsigned char floor( unsigned char n, unsigned char align ) { return (n / align) * align; } 376 short int floor( short int n, short int align ) { return (n / align) * align; } 377 unsigned short int floor( unsigned short int n, unsigned short int align ) { return (n / align) * align; } 378 int floor( int n, int align ) { return (n / align) * align; } 379 unsigned int floor( unsigned int n, unsigned int align ) { return (n / align) * align; } 380 long int floor( long int n, long int align ) { return (n / align) * align; } 381 unsigned long int floor( unsigned long int n, unsigned long int align ) { return (n / align) * align; } 382 long long int floor( long long int n, long long int align ) { return (n / align) * align; } 383 unsigned long long int floor( unsigned long long int n, unsigned long long int align ) { return (n / align) * align; } 383 384 384 385 // forall( T | { T ?/?( T, T ); T ?*?( T, T ); } ) 385 // T floor( T n, T align ) { return n / align* align; }386 // T floor( T n, T align ) { return (n / align) * align; } 386 387 387 388 signed char ceiling_div( signed char n, char align ) { return (n + (align - 1hh)) / align; } 388 unsigned char ceiling_div( unsigned char n, unsigned char align ) { return (n + (align - 1hh )) / align; }389 unsigned char ceiling_div( unsigned char n, unsigned char align ) { return (n + (align - 1hhu)) / align; } 389 390 short int ceiling_div( short int n, short int align ) { return (n + (align - 1h)) / align; } 390 unsigned short int ceiling_div( unsigned short int n, unsigned short int align ) { return (n + (align - 1h )) / align; }391 unsigned short int ceiling_div( unsigned short int n, unsigned short int align ) { return (n + (align - 1hu)) / align; } 391 392 int ceiling_div( int n, int align ) { return (n + (align - 1n)) / align; } 392 unsigned int ceiling_div( unsigned int n, unsigned int align ) { return (n + (align - 1n )) / align; }393 unsigned int ceiling_div( unsigned int n, unsigned int align ) { return (n + (align - 1nu)) / align; } 393 394 long int ceiling_div( long int n, long int align ) { return (n + (align - 1l)) / align; } 394 unsigned long int ceiling_div( unsigned long int n, unsigned long int align ) { return (n + (align - 1l )) / align; }395 unsigned long int ceiling_div( unsigned long int n, unsigned long int align ) { return (n + (align - 1lu)) / align; } 395 396 long long int ceiling_div( long long int n, long long int align ) { return (n + (align - 1ll)) / align; } 396 unsigned long long int ceiling_div( unsigned long long int n, unsigned long long int align ) { return (n + (align - 1ll )) / align; }397 unsigned long long int ceiling_div( unsigned long long int n, unsigned long long int align ) { return (n + (align - 1llu)) / align; } 397 398 398 399 signed char ceiling( signed char n, char align ) { 399 align = align < 0 ? -align : align; // align must be signed 400 typeof(n) trunc = floor( n, align ); 401 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc; 400 typeof(n) trunc = floor( n, align ); 401 return n < 0 || n == trunc ? trunc : trunc + align; 402 402 } 403 403 unsigned char ceiling( unsigned char n, unsigned char align ) { 404 404 typeof(n) trunc = floor( n, align ); 405 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc;405 return n == trunc ? trunc : trunc + align; 406 406 } 407 407 short int ceiling( short int n, short int align ) { 408 align = align < 0 ? -align : align; // align must be signed 409 typeof(n) trunc = floor( n, align ); 410 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc; 408 typeof(n) trunc = floor( n, align ); 409 return n < 0 || n == trunc ? trunc : trunc + align; 411 410 } 412 411 unsigned short int ceiling( unsigned short int n, unsigned short int align ) { 413 412 typeof(n) trunc = floor( n, align ); 414 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc;413 return n == trunc ? trunc : trunc + align; 415 414 } 416 415 int ceiling( int n, int align ) { 417 align = align < 0 ? -align : align; // align must be signed 418 typeof(n) trunc = floor( n, align ); 419 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc; 416 typeof(n) trunc = floor( n, align ); 417 return n < 0 || n == trunc ? trunc : trunc + align; 420 418 } 421 419 unsigned int ceiling( unsigned int n, unsigned int align ) { 422 420 typeof(n) trunc = floor( n, align ); 423 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc;421 return n == trunc ? trunc : trunc + align; 424 422 } 425 423 long int ceiling( long int n, long int align ) { 426 align = align < 0 ? -align : align; // align must be signed 427 typeof(n) trunc = floor( n, align ); 428 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc; 424 typeof(n) trunc = floor( n, align ); 425 return n < 0 || n == trunc ? trunc : trunc + align; 429 426 } 430 427 unsigned long int ceiling( unsigned long int n, unsigned long int align ) { 431 428 typeof(n) trunc = floor( n, align ); 432 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc;429 return n == trunc ? trunc : trunc + align; 433 430 } 434 431 long long int ceiling( long long int n, signed long long int align ) { 435 align = align < 0 ? -align : align; // align must be signed 436 typeof(n) trunc = floor( n, align ); 437 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc; 432 typeof(n) trunc = floor( n, align ); 433 return n < 0 || n == trunc ? trunc : trunc + align; 438 434 } 439 435 unsigned long long int ceiling( unsigned long long int n, unsigned long long int align ) { 440 436 typeof(n) trunc = floor( n, align ); 441 return n >= 0 ? trunc + (trunc != n ? align : 0) : trunc;437 return n == trunc ? trunc : trunc + align; 442 438 } 443 439
Note: See TracChangeset
for help on using the changeset viewer.