Nur nebenbei: Es gibt schon Leute, die sich an einer plattformunabhängigen libc versucht haben (z. B. Newlib, theoretisch afaik sogar glibc). Das Problem ist nur, dass die nicht sehr einfach zu portieren sind (vor allem glibc nicht), deshalb wünsche ich dennoch viel Erfolg, ich wollte nur mal gesagt haben, dass es solche Libs schon gibt.
Das größte Problem ist dabei wohl, dass du irgendein Interface zum Betriebssystem brauchst. Viele existierende libcs gehen da von POSIX-Sachen aus (also z. B. open, close, read, write, fork, ...). Du kannst dir natürlich selbst was überlegen, das Problem ist aber immer, dass du mit den Sachen möglichst alle Funktionen aufbauen können musst und dennoch möglichst portabel bleibst. Das ist zumindest das größte designtechnische Problem. Das größte wirkliche Problem ist natürlich das Schreiben des Codes, weshalb ich mit paloxena2 jetzt ein OS schreibe, dessen Syscalls die gleichen wie die von Linux sind, damit ich dessen libc gleich mit nutzen kann.
Und zur Frage, ob es noch mehr gibt: Ja. Da gibt es sys/types.h, sys/wait.h, unistd.h, fcntl.h und jede Menge mehr - das gehört zwar strenggenommen nicht mehr zur libc, sondern zu POSIX, aber so gut wie jedes Programm, das ich kenne, nutzt nicht nur die stdlibc, sondern POSIX gleich mit. Und zur libc im engeren Sinn würde auch noch stdint.h gehören, so auf den ersten Blick. Ach, und stdbool.h. Hm, kann man ja alles bei WP nachlesen:
http://en.wikipedia.org/wiki/C_standard_library#ISO_C_library_headers EDIT: Öhm, btw, das ist keine Wurzel, was dein sqrt da macht. Das gibt das Quadrat der Zahl zurück, aber nicht die Quadratwurzel.
EDIT2: Ui, dein fabs ist auch falsch. Das sollte nicht "2 * x" sondern eher "-x" heißen. Und asin() ist btw. nicht "Sinus Alpha", sondern der Arcussinus. Und ob man den so einfach berechnen kann, bezweifle ich (wobei ich grad nicht weiß, wie man ihn "wirklich" berechnet).