Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/stdlib.hfa

    r8a97248 rb5e725a  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Feb  2 11:30:04 2023
    13 // Update Count     : 766
     12// Last Modified On : Mon Aug 14 18:19:12 2023
     13// Update Count     : 777
    1414//
    1515
     
    1919#include "bits/align.hfa"                                                               // libAlign
    2020#include "bits/random.hfa"                                                              // prng
     21#include <Exception.hfa>
     22#include <heap.hfa>
    2123
    2224#include <stdlib.h>                                                                             // *alloc, strto*, ato*
    23 #include <heap.hfa>
    24 
     25#include <errno.h>
    2526
    2627// Reduce includes by explicitly defining these routines.
     
    294295
    295296static inline {
    296         int strto( const char sptr[], char ** eptr, int base ) { return (int)strtol( sptr, eptr, base ); }
    297         unsigned int strto( const char sptr[], char ** eptr, int base ) { return (unsigned int)strtoul( sptr, eptr, base ); }
    298         long int strto( const char sptr[], char ** eptr, int base ) { return strtol( sptr, eptr, base ); }
    299         unsigned long int strto( const char sptr[], char ** eptr, int base ) { return strtoul( sptr, eptr, base ); }
    300         long long int strto( const char sptr[], char ** eptr, int base ) { return strtoll( sptr, eptr, base ); }
    301         unsigned long long int strto( const char sptr[], char ** eptr, int base ) { return strtoull( sptr, eptr, base ); }
    302 
    303         float strto( const char sptr[], char ** eptr ) { return strtof( sptr, eptr ); }
    304         double strto( const char sptr[], char ** eptr ) { return strtod( sptr, eptr ); }
    305         long double strto( const char sptr[], char ** eptr ) { return strtold( sptr, eptr ); }
    306 } // distribution
    307 
    308 float _Complex strto( const char sptr[], char ** eptr );
    309 double _Complex strto( const char sptr[], char ** eptr );
    310 long double _Complex strto( const char sptr[], char ** eptr );
     297        int strto( const char sptr[], char * eptr[], int base ) { return (int)strtol( sptr, eptr, base ); }
     298        unsigned int strto( const char sptr[], char * eptr[], int base ) { return (unsigned int)strtoul( sptr, eptr, base ); }
     299        long int strto( const char sptr[], char * eptr[], int base ) { return strtol( sptr, eptr, base ); }
     300        unsigned long int strto( const char sptr[], char * eptr[], int base ) { return strtoul( sptr, eptr, base ); }
     301        long long int strto( const char sptr[], char * eptr[], int base ) { return strtoll( sptr, eptr, base ); }
     302        unsigned long long int strto( const char sptr[], char * eptr[], int base ) { return strtoull( sptr, eptr, base ); }
     303
     304        float strto( const char sptr[], char * eptr[] ) { return strtof( sptr, eptr ); }
     305        double strto( const char sptr[], char * eptr[] ) { return strtod( sptr, eptr ); }
     306        long double strto( const char sptr[], char * eptr[] ) { return strtold( sptr, eptr ); }
     307} // distribution
     308
     309float _Complex strto( const char sptr[], char * eptr[] );
     310double _Complex strto( const char sptr[], char * eptr[] );
     311long double _Complex strto( const char sptr[], char * eptr[] );
     312
     313ExceptionDecl( out_of_range );
     314ExceptionDecl( invalid_argument );
     315
     316forall( T | { T strto( const char sptr[], char * eptr[], int ); } )
     317T convert( const char sptr[] );
    311318
    312319static inline {
     
    367374
    368375        char random( void ) { return (unsigned long int)random(); }
    369         char random( char u ) { return random( (unsigned long int)u ); } // [0,u)
     376        char random( char u ) { return (unsigned long int)random( (unsigned long int)u ); } // [0,u)
    370377        char random( char l, char u ) { return random( (unsigned long int)l, (unsigned long int)u ); } // [l,u)
    371378        int random( void ) { return (long int)random(); }
    372         int random( int u ) { return random( (long int)u ); } // [0,u]
     379        int random( int u ) { return (long int)random( (long int)u ); } // [0,u]
    373380        int random( int l, int u ) { return random( (long int)l, (long int)u ); } // [l,u)
    374381        unsigned int random( void ) { return (unsigned long int)random(); }
    375         unsigned int random( unsigned int u ) { return random( (unsigned long int)u ); } // [0,u]
     382        unsigned int random( unsigned int u ) { return (unsigned long int)random( (unsigned long int)u ); } // [0,u]
    376383        unsigned int random( unsigned int l, unsigned int u ) { return random( (unsigned long int)l, (unsigned long int)u ); } // [l,u)
    377384} // distribution
     
    454461} // distribution
    455462
     463// Set default random-generator size.
     464#if defined( __x86_64__ ) || defined( __aarch64__ )             // 64-bit architecture
     465#define PRNG PRNG64
     466#else                                                                                                   // 32-bit architecture
     467#define PRNG PRNG32
     468#endif // __x86_64__
     469
    456470// Concurrent Pseudo Random-Number Generator : generate repeatable sequence of values that appear random.
    457471//
Note: See TracChangeset for help on using the changeset viewer.