Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/math.hfa

    r7c012e8 r95bda0a  
    1010// Created On       : Mon Apr 18 23:37:04 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun 18 08:13:53 2023
    13 // Update Count     : 202
     12// Last Modified On : Sat Oct  8 08:40:42 2022
     13// Update Count     : 136
    1414//
    1515
     
    236236
    237237        return (i << 32) + (sum);
    238 } // log2_u32_32
     238}
    239239
    240240//---------------------- Trigonometric ----------------------
     
    371371
    372372inline __attribute__((always_inline)) static {
    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; }
     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; }
    384383
    385384        // forall( T | { T ?/?( T, T ); T ?*?( T, T ); } )
    386         // T floor( T n, T align ) { return (n / align) * align; }
    387 
    388         signed char ceiling_div( signed char n, char align ) { return (n + (align - 1hh)) / align; }
    389         unsigned char ceiling_div( unsigned char n, unsigned char align ) { return (n + (align - 1hhu)) / align; }
    390         short int ceiling_div( short int n, 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; }
    392         int ceiling_div( int n, int align ) { return (n + (align - 1n)) / align; }
    393         unsigned int ceiling_div( unsigned int n, unsigned int align ) { return (n + (align - 1nu)) / align; }
    394         long int ceiling_div( long int n, 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; }
    396         long long int ceiling_div( long long int n, 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; }
    398 
    399         signed char ceiling( signed char n, char align ) {
    400                 typeof(n) trunc = floor( n, align );
    401                 return n < 0 || n == trunc ? trunc : trunc + align;
    402         }
    403         unsigned char ceiling( unsigned char n, unsigned char align ) {
    404                 typeof(n) trunc = floor( n, align );
    405                 return n == trunc ? trunc : trunc + align;
    406         }
    407         short int ceiling( short int n, short int align ) {
    408                 typeof(n) trunc = floor( n, align );
    409                 return n < 0 || n == trunc ? trunc : trunc + align;
    410         }
    411         unsigned short int ceiling( unsigned short int n, unsigned short int align ) {
    412                 typeof(n) trunc = floor( n, align );
    413                 return n == trunc ? trunc : trunc + align;
    414         }
    415         int ceiling( int n, int align ) {
    416                 typeof(n) trunc = floor( n, align );
    417                 return n < 0 || n == trunc ? trunc : trunc + align;
    418         }
    419         unsigned int ceiling( unsigned int n, unsigned int align ) {
    420                 typeof(n) trunc = floor( n, align );
    421                 return n == trunc ? trunc : trunc + align;
    422         }
    423         long int ceiling( long int n, long int align ) {
    424                 typeof(n) trunc = floor( n, align );
    425                 return n < 0 || n == trunc ? trunc : trunc + align;
    426         }
    427         unsigned long int ceiling( unsigned long int n, unsigned long int align ) {
    428                 typeof(n) trunc = floor( n, align );
    429                 return n == trunc ? trunc : trunc + align;
    430         }
    431         long long int ceiling( long long int n, signed long long int align ) {
    432                 typeof(n) trunc = floor( n, align );
    433                 return n < 0 || n == trunc ? trunc : trunc + align;
    434         }
    435         unsigned long long int ceiling( unsigned long long int n, unsigned long long int align ) {
    436                 typeof(n) trunc = floor( n, align );
    437                 return n == trunc ? trunc : trunc + align;
    438         }
     385        // T floor( T n, T align ) { return n / align * align; }
     386
     387        signed char ceiling_div( signed char n, char align ) { return (n + (align - 1)) / align; }
     388        unsigned char ceiling_div( unsigned char n, unsigned char align ) { return (n + (align - 1)) / align; }
     389        short int ceiling_div( short int n, short int align ) { return (n + (align - 1)) / align; }
     390        unsigned short int ceiling_div( unsigned short int n, unsigned short int align ) { return (n + (align - 1)) / align; }
     391        int ceiling_div( int n, int align ) { return (n + (align - 1)) / align; }
     392        unsigned int ceiling_div( unsigned int n, unsigned int align ) { return (n + (align - 1)) / align; }
     393        long int ceiling_div( long int n, long int align ) { return (n + (align - 1)) / align; }
     394        unsigned long int ceiling_div( unsigned long int n, unsigned long int align ) { return (n + (align - 1)) / align; }
     395        long long int ceiling_div( long long int n, long long int align ) { return (n + (align - 1)) / align; }
     396        unsigned long long int ceiling_div( unsigned long long int n, unsigned long long int align ) { return (n + (align - 1)) / align; }
     397
     398        // forall( T | { T ?+?( T, T ); T ?-?( T, T ); T ?%?( T, T ); } )
     399        // T ceiling_div( T n, T align ) { verify( is_pow2( align ) );return (n + (align - 1)) / align; }
     400
     401        // gcc notices the div/mod pair and saves both so only one div.
     402        signed char ceiling( signed char n, signed char align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     403        unsigned char ceiling( unsigned char n, unsigned char align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     404        short int ceiling( short int n, short int align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     405        unsigned short int ceiling( unsigned short int n, unsigned short int align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     406        int ceiling( int n, int align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     407        unsigned int ceiling( unsigned int n, unsigned int align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     408        long int ceiling( long int n, long int align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     409        unsigned long int ceiling( unsigned long int n, unsigned long int align ) { return floor( n + (n % align != 0 ? align - 1 : 0) , align); }
     410        long long int ceiling( long long int n, long long int align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     411        unsigned long long int ceiling( unsigned long long int n, unsigned long long int align ) { return floor( n + (n % align != 0 ? align - 1 : 0), align ); }
     412
     413        // forall( T | { void ?{}( T &, one_t ); T ?+?( T, T ); T ?-?( T, T ); T ?/?( T, T ); } )
     414        // T ceiling( T n, T align ) { return return floor( n + (n % align != 0 ? align - 1 : 0), align ); *}
    439415
    440416        float floor( float x ) { return floorf( x ); }
Note: See TracChangeset for help on using the changeset viewer.