I'm going nuts with issues now and can't get to it, but the math.h functions could be easily added to TCLib's capabilities. The issue with that is as follows. In my original work on TCLib my intention was to recode everything myself from scratch that I needed from the C Runtime. The only place I got stuck was on Math.h, specifically pow(), i.e., raising a floating point number to a floating point exponent. That is one partuicular function I absolutely needed. I didn't know how to do it. I downloaded the C Runtime source from GCC, but I simply ran out of time trying to figure it out.
Next step or movement in the drama was my discovery that Microsoft's Windows operating systems automatically loads msvcrt.dll into every GUI process it starts. If you don't believe me simply run Mark Russinovitch's utility that shows all the dlls loaded into a process. What you'll find is that every GUI process - even the very simplest with just a blank Window, has msvcrt.dll loaded into the process. Not true for console processes but absolutely true for GUI processes that make calls into user32.lib and gdi32.lib.
Having absorbed that reality it dawned on me that if that's the case - and it is, why should I be wearing myself out writing code replacements for functions that are loaded into my process anyway and which I'm powerless to eliminate?
The creators of mingw felt likewise and that's where they get their C Runtime functionality, i.e., from msvcrt.dll. For their part Microsoft isn't thrilled about that outcome, because its their position that a Windows installation isn't a 'Delivery Channel' for the C Runtime. They would prefer folks use the 'versioned' instances of the C Runtime provided with Visual Studio, statically link against them, or provide them to users as redistributables.
But all the C Runtime functions are there and msvcrt.dll is part of the operating system, i.e., it'll always be there. Its a protected operating system file. I've stated elsewhere that Bob Zale up through version 9 of the Windows compiler included a copy of msvcrt.dll in his /bin subdirectory of his installation, and since noting that, I've always been curious what use he made of it internally.
In any case, my present versions of TCLib get most of their stdio functionality through function pointers to the functions in msvcrt.dll rather than through code I've written. That is how pow() works too. The trig and other functions could easily be implemented likewise. I didn't because I don't do much surveying work anymore. I used to years ago, and may again at some point, but I didn't need it right now. Actually, its so easy to add it I could do it in a few minutes.