c/constants.rkt
#lang racket/base

; XXX Add macros/provides/contracts/docs
(define CL_CHAR_BIT         8)
(define CL_SCHAR_MAX        127)
(define CL_SCHAR_MIN        (- -127 1))
(define CL_CHAR_MAX         CL_SCHAR_MAX)
(define CL_CHAR_MIN         CL_SCHAR_MIN)
(define CL_UCHAR_MAX        255)
(define CL_SHRT_MAX         32767)
(define CL_SHRT_MIN         (- -32767 1))
(define CL_USHRT_MAX        65535)
(define CL_INT_MAX          2147483647)
(define CL_INT_MIN          (- -2147483647 1))
(define CL_UINT_MAX         #xffffffff)
(define CL_LONG_MAX         #x7FFFFFFFFFFFFFFF)
(define CL_LONG_MIN         (- (- #x7FFFFFFFFFFFFFFF) 1))
(define CL_ULONG_MAX        #xFFFFFFFFFFFFFFFF)

(define CL_FLT_DIG          6)
(define CL_FLT_MANT_DIG     24)
(define CL_FLT_MAX_10_EXP   +38)
(define CL_FLT_MAX_EXP      +128)
(define CL_FLT_MIN_10_EXP   -37)
(define CL_FLT_MIN_EXP      -125)
(define CL_FLT_RADIX        2)
(define CL_FLT_MAX          340282346638528859811704183484516925440.0)
(define CL_FLT_MIN          1.175494350822287507969e-38)
(define CL_FLT_EPSILON      1.0e-23)

(define CL_DBL_DIG          15)
(define CL_DBL_MANT_DIG     53)
(define CL_DBL_MAX_10_EXP   +308)
(define CL_DBL_MAX_EXP      +1024)
(define CL_DBL_MIN_10_EXP   -307)
(define CL_DBL_MIN_EXP      -1021)
(define CL_DBL_RADIX        2)
(define CL_DBL_MAX          179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0)
(define CL_DBL_MIN          2.225073858507201383090e-308)
(define CL_DBL_EPSILON      2.220446049250313080847e-16)

(provide (all-defined-out))