mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-02 17:28:30 +00:00
Get Cosmopolitan into releasable state
A new rollup tool now exists for flattening out the headers in a way that works better for our purposes than cpp. A lot of the API clutter has been removed. APIs that aren't a sure thing in terms of general recommendation are now marked internal. There's now a smoke test for the amalgamation archive and gigantic header file. So we can now guarantee you can use this project on the easiest difficulty setting without the gigantic repository. A website is being created, which is currently a work in progress: https://justine.storage.googleapis.com/cosmopolitan/index.html
This commit is contained in:
parent
dba7552c1e
commit
ea0b5d9d1c
775 changed files with 6864 additions and 3963 deletions
|
@ -18,15 +18,19 @@
|
|||
│ 02110-1301 USA │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/bits/bits.h"
|
||||
#include "libc/bits/safemacros.h"
|
||||
#include "libc/bits/safemacros.internal.h"
|
||||
#include "libc/calls/calls.h"
|
||||
#include "libc/conv/conv.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/log/log.h"
|
||||
#include "libc/macros.h"
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/nexgen32e/bsf.h"
|
||||
#include "libc/nexgen32e/bsr.h"
|
||||
#include "libc/nexgen32e/ffs.h"
|
||||
#include "libc/nexgen32e/x86feature.h"
|
||||
#include "libc/rand/rand.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/sysv/consts/o.h"
|
||||
#include "libc/time/time.h"
|
||||
|
@ -98,6 +102,34 @@ static long double ParseNumber(struct Token t) {
|
|||
}
|
||||
}
|
||||
|
||||
static long double FnRand(struct Numbers *a) {
|
||||
return rand();
|
||||
}
|
||||
|
||||
static long double FnRand32(struct Numbers *a) {
|
||||
return rand32();
|
||||
}
|
||||
|
||||
static long double FnRand64(struct Numbers *a) {
|
||||
return rand64();
|
||||
}
|
||||
|
||||
static long double FnRdrand(struct Numbers *a) {
|
||||
if (X86_HAVE(RDRND)) {
|
||||
return rdrand();
|
||||
} else {
|
||||
return NAN;
|
||||
}
|
||||
}
|
||||
|
||||
static long double FnRdseed(struct Numbers *a) {
|
||||
if (X86_HAVE(RDSEED)) {
|
||||
return rdseed();
|
||||
} else {
|
||||
return NAN;
|
||||
}
|
||||
}
|
||||
|
||||
static long double FnAtan2(struct Numbers *a) {
|
||||
if (!a || !a->n) MissingArgumentError();
|
||||
return atan2l(a->n->x, a->x);
|
||||
|
@ -662,6 +694,11 @@ static const struct Fn {
|
|||
{"pow", FnPow},
|
||||
{"powi", FnPowi},
|
||||
{"print", FnPrint},
|
||||
{"rand", FnRand},
|
||||
{"rand32", FnRand32},
|
||||
{"rand64", FnRand64},
|
||||
{"rdrand", FnRdrand},
|
||||
{"rdseed", FnRdseed},
|
||||
{"remainder", FnRemainder},
|
||||
{"rint", FnRint},
|
||||
{"rol", FnRol},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue